X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fphpunit.php;h=d8171044f3b813c6deda6731b7f66d49d176cb51;hb=1ba29a598d549e6ea9a67fed3b7f42a2a56c7e03;hp=a70946af818f8815b5f1365a16aedab2070cbe52;hpb=d24af42ffff087a0824f6e9abefa33cab3e4e835;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/phpunit.php b/tests/phpunit/phpunit.php index a70946af81..d8171044f3 100755 --- a/tests/phpunit/phpunit.php +++ b/tests/phpunit/phpunit.php @@ -10,23 +10,20 @@ // through this entry point or not. define( 'MW_PHPUNIT_TEST', true ); -$wgPhpUnitClass = 'PHPUnit_TextUI_Command'; - // Start up MediaWiki in command-line mode require_once dirname( dirname( __DIR__ ) ) . "/maintenance/Maintenance.php"; class PHPUnitMaintClass extends Maintenance { public static $additionalOptions = [ - 'regex' => false, 'file' => false, 'use-filebackend' => false, 'use-bagostuff' => false, 'use-jobqueue' => false, - 'keep-uploads' => false, 'use-normal-tables' => false, 'reuse-db' => false, 'wiki' => false, + 'profiler' => false, ]; public function __construct() { @@ -43,22 +40,10 @@ class PHPUnitMaintClass extends Maintenance { false, # not required false # no arg needed ); - $this->addOption( - 'regex', - 'Only run parser tests that match the given regex.', - false, - true - ); $this->addOption( 'file', 'File describing parser tests.', false, true ); $this->addOption( 'use-filebackend', 'Use filebackend', false, true ); $this->addOption( 'use-bagostuff', 'Use bagostuff', false, true ); $this->addOption( 'use-jobqueue', 'Use jobqueue', false, true ); - $this->addOption( - 'keep-uploads', - 'Re-use the same upload directory for each test, don\'t delete it.', - false, - false - ); $this->addOption( 'use-normal-tables', 'Use normal DB tables.', false, false ); $this->addOption( 'reuse-db', 'Init DB only if tables are missing and keep after finish.', @@ -70,104 +55,10 @@ class PHPUnitMaintClass extends Maintenance { public function finalSetup() { parent::finalSetup(); - global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgMainWANCache; - global $wgMainStash; - global $wgLanguageConverterCacheType, $wgUseDatabaseMessages; - global $wgLocaltimezone, $wgLocalisationCacheConf; - global $wgDevelopmentWarnings; - global $wgSessionProviders, $wgSessionPbkdf2Iterations; - global $wgJobTypeConf; - global $wgAuthManagerConfig, $wgAuth; - // Inject test autoloader - require_once __DIR__ . '/../TestsAutoLoader.php'; - - // wfWarn should cause tests to fail - $wgDevelopmentWarnings = true; - - // Make sure all caches and stashes are either disabled or use - // in-process cache only to prevent tests from using any preconfigured - // cache meant for the local wiki from outside the test run. - // See also MediaWikiTestCase::run() which mocks CACHE_DB and APC. - - // Disabled in DefaultSettings, override local settings - $wgMainWANCache = - $wgMainCacheType = CACHE_NONE; - // Uses CACHE_ANYTHING in DefaultSettings, use hash instead of db - $wgMessageCacheType = - $wgParserCacheType = - $wgSessionCacheType = - $wgLanguageConverterCacheType = 'hash'; - // Uses db-replicated in DefaultSettings - $wgMainStash = 'hash'; - // Use memory job queue - $wgJobTypeConf = [ - 'default' => [ 'class' => 'JobQueueMemory', 'order' => 'fifo' ], - ]; - - $wgUseDatabaseMessages = false; # Set for future resets - - // Assume UTC for testing purposes - $wgLocaltimezone = 'UTC'; - - $wgLocalisationCacheConf['storeClass'] = 'LCStoreNull'; - - // Generic MediaWiki\Session\SessionManager configuration for tests - // We use CookieSessionProvider because things might be expecting - // cookies to show up in a FauxRequest somewhere. - $wgSessionProviders = [ - [ - 'class' => MediaWiki\Session\CookieSessionProvider::class, - 'args' => [ [ - 'priority' => 30, - 'callUserSetCookiesHook' => true, - ] ], - ], - ]; - - // Single-iteration PBKDF2 session secret derivation, for speed. - $wgSessionPbkdf2Iterations = 1; + self::requireTestsAutoloader(); - // Generic AuthManager configuration for testing - $wgAuthManagerConfig = [ - 'preauth' => [], - 'primaryauth' => [ - [ - 'class' => MediaWiki\Auth\TemporaryPasswordPrimaryAuthenticationProvider::class, - 'args' => [ [ - 'authoritative' => false, - ] ], - ], - [ - 'class' => MediaWiki\Auth\LocalPasswordPrimaryAuthenticationProvider::class, - 'args' => [ [ - 'authoritative' => true, - ] ], - ], - ], - 'secondaryauth' => [], - ]; - $wgAuth = new MediaWiki\Auth\AuthManagerAuthPlugin(); - - // Bug 44192 Do not attempt to send a real e-mail - Hooks::clear( 'AlternateUserMailer' ); - Hooks::register( - 'AlternateUserMailer', - function () { - return false; - } - ); - // xdebug's default of 100 is too low for MediaWiki - ini_set( 'xdebug.max_nesting_level', 1000 ); - - // Bug T116683 serialize_precision of 100 - // may break testing against floating point values - // treated with PHP's serialize() - ini_set( 'serialize_precision', 17 ); - - // TODO: we should call MediaWikiTestCase::prepareServices( new GlobalVarConfig() ) here. - // But PHPUnit may not be loaded yet, so we have to wait until just - // before PHPUnit_TextUI_Command::main() is executed at the end of this file. + TestSetup::applyInitialConfig(); } public function execute() { @@ -188,9 +79,10 @@ class PHPUnitMaintClass extends Maintenance { [ '--configuration', $IP . '/tests/phpunit/suite.xml' ] ); } + $phpUnitClass = 'PHPUnit_TextUI_Command'; + if ( $this->hasOption( 'with-phpunitclass' ) ) { - global $wgPhpUnitClass; - $wgPhpUnitClass = $this->getOption( 'with-phpunitclass' ); + $phpUnitClass = $this->getOption( 'with-phpunitclass' ); # Cleanup $args array so the option and its value do not # pollute PHPUnit @@ -220,6 +112,25 @@ class PHPUnitMaintClass extends Maintenance { } } + if ( !class_exists( 'PHPUnit_Framework_TestCase' ) ) { + echo "PHPUnit not found. Please install it and other dev dependencies by + running `composer install` in MediaWiki root directory.\n"; + exit( 1 ); + } + if ( !class_exists( $phpUnitClass ) ) { + echo "PHPUnit entry point '" . $phpUnitClass . "' not found. Please make sure you installed + the containing component and check the spelling of the class name.\n"; + exit( 1 ); + } + + echo defined( 'HHVM_VERSION' ) ? + 'Using HHVM ' . HHVM_VERSION . ' (' . PHP_VERSION . ")\n" : + 'Using PHP ' . PHP_VERSION . "\n"; + + // Prepare global services for unit tests. + MediaWikiTestCase::prepareServices( new GlobalVarConfig() ); + + $phpUnitClass::main(); } public function getDbType() { @@ -250,25 +161,3 @@ class PHPUnitMaintClass extends Maintenance { $maintClass = 'PHPUnitMaintClass'; require RUN_MAINTENANCE_IF_MAIN; - -if ( !class_exists( 'PHPUnit_Framework_TestCase' ) ) { - echo "PHPUnit not found. Please install it and other dev dependencies by -running `composer install` in MediaWiki root directory.\n"; - exit( 1 ); -} -if ( !class_exists( $wgPhpUnitClass ) ) { - echo "PHPUnit entry point '" . $wgPhpUnitClass . "' not found. Please make sure you installed -the containing component and check the spelling of the class name.\n"; - exit( 1 ); -} - -echo defined( 'HHVM_VERSION' ) ? - 'Using HHVM ' . HHVM_VERSION . ' (' . PHP_VERSION . ")\n" : - 'Using PHP ' . PHP_VERSION . "\n"; - -// Prepare global services for unit tests. -// FIXME: this should be done in the finalSetup() method, -// but PHPUnit may not have been loaded at that point. -MediaWikiTestCase::prepareServices( new GlobalVarConfig() ); - -$wgPhpUnitClass::main();