From: addshore Date: Mon, 5 May 2014 16:10:07 +0000 (+0100) Subject: Remove MediaWikiPHPUnitCommand X-Git-Tag: 1.31.0-rc.0~14621 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=892a992ab870f6b130bdaf75b0d274ab805f8d70;p=lhc%2Fweb%2Fwiklou.git Remove MediaWikiPHPUnitCommand All functionality has been moved to other places Change-Id: I6b6b0ef846bc63108c4dff9e17098432fd9d1697 --- diff --git a/tests/TestsAutoLoader.php b/tests/TestsAutoLoader.php index eee34de4ba..b56890badb 100644 --- a/tests/TestsAutoLoader.php +++ b/tests/TestsAutoLoader.php @@ -38,7 +38,6 @@ $wgAutoloadClasses += array( # tests/phpunit 'MediaWikiTestCase' => "$testDir/phpunit/MediaWikiTestCase.php", - 'MediaWikiPHPUnitCommand' => "$testDir/phpunit/MediaWikiPHPUnitCommand.php", 'MediaWikiPHPUnitTestListener' => "$testDir/phpunit/MediaWikiPHPUnitTestListener.php", 'MediaWikiLangTestCase' => "$testDir/phpunit/MediaWikiLangTestCase.php", 'MediaWikiPasswordTestCase' => "$testDir/phpunit/MediaWikiPasswordTestCase.php", diff --git a/tests/phpunit/MediaWikiPHPUnitCommand.php b/tests/phpunit/MediaWikiPHPUnitCommand.php deleted file mode 100644 index 62b9cfd872..0000000000 --- a/tests/phpunit/MediaWikiPHPUnitCommand.php +++ /dev/null @@ -1,54 +0,0 @@ - false, - 'file=' => false, - 'use-filebackend=' => false, - 'use-bagostuff=' => false, - 'use-jobqueue=' => false, - 'keep-uploads' => false, - 'use-normal-tables' => false, - 'reuse-db' => false, - 'wiki=' => false, - ); - - public function __construct() { - foreach ( self::$additionalOptions as $option => $default ) { - $this->longOptions[$option] = $option . 'Handler'; - } - } - - public static function main( $exit = true ) { - $command = new self; - $command->run( $_SERVER['argv'], $exit ); - } - - public function __call( $func, $args ) { - - if ( substr( $func, -7 ) == 'Handler' ) { - if ( is_null( $args[0] ) ) { - $args[0] = true; - } //Booleans - self::$additionalOptions[substr( $func, 0, -7 )] = $args[0]; - } - } - - public function showHelp() { - parent::showHelp(); - - print <<getCliArg( 'use-filebackend=' ) ) { + if ( $this->getCliArg( 'use-filebackend' ) ) { if ( self::$backendToUse ) { $this->singleBackend = self::$backendToUse; } else { - $name = $this->getCliArg( 'use-filebackend=' ); + $name = $this->getCliArg( 'use-filebackend' ); $useConfig = array(); foreach ( $wgFileBackends as $conf ) { if ( $conf['name'] == $name ) { diff --git a/tests/phpunit/includes/filerepo/StoreBatchTest.php b/tests/phpunit/includes/filerepo/StoreBatchTest.php index a79866efcb..9cc2efbfe9 100644 --- a/tests/phpunit/includes/filerepo/StoreBatchTest.php +++ b/tests/phpunit/includes/filerepo/StoreBatchTest.php @@ -17,8 +17,8 @@ class StoreBatchTest extends MediaWikiTestCase { # Forge a FSRepo object to not have to rely on local wiki settings $tmpPrefix = wfTempDir() . '/storebatch-test-' . time() . '-' . mt_rand(); - if ( $this->getCliArg( 'use-filebackend=' ) ) { - $name = $this->getCliArg( 'use-filebackend=' ); + if ( $this->getCliArg( 'use-filebackend' ) ) { + $name = $this->getCliArg( 'use-filebackend' ); $useConfig = array(); foreach ( $wgFileBackends as $conf ) { if ( $conf['name'] == $name ) { diff --git a/tests/phpunit/includes/jobqueue/JobQueueTest.php b/tests/phpunit/includes/jobqueue/JobQueueTest.php index 70374dc651..69e4006822 100644 --- a/tests/phpunit/includes/jobqueue/JobQueueTest.php +++ b/tests/phpunit/includes/jobqueue/JobQueueTest.php @@ -21,8 +21,8 @@ class JobQueueTest extends MediaWikiTestCase { $this->setMwGlobals( 'wgMemc', new HashBagOStuff() ); - if ( $this->getCliArg( 'use-jobqueue=' ) ) { - $name = $this->getCliArg( 'use-jobqueue=' ); + if ( $this->getCliArg( 'use-jobqueue' ) ) { + $name = $this->getCliArg( 'use-jobqueue' ); if ( !isset( $wgJobTypeConf[$name] ) ) { throw new MWException( "No \$wgJobTypeConf entry for '$name'." ); } diff --git a/tests/phpunit/includes/objectcache/BagOStuffTest.php b/tests/phpunit/includes/objectcache/BagOStuffTest.php index 1972bb50a4..160ddad020 100644 --- a/tests/phpunit/includes/objectcache/BagOStuffTest.php +++ b/tests/phpunit/includes/objectcache/BagOStuffTest.php @@ -11,8 +11,8 @@ class BagOStuffTest extends MediaWikiTestCase { parent::setUp(); // type defined through parameter - if ( $this->getCliArg( 'use-bagostuff=' ) ) { - $name = $this->getCliArg( 'use-bagostuff=' ); + if ( $this->getCliArg( 'use-bagostuff' ) ) { + $name = $this->getCliArg( 'use-bagostuff' ); $this->cache = ObjectCache::newFromId( $name ); } else { @@ -67,7 +67,7 @@ class BagOStuffTest extends MediaWikiTestCase { * - pcntl_fork is supported by the system * - cache type will correctly support calls over forks */ - $fork = (bool)$this->getCliArg( 'use-bagostuff=' ); + $fork = (bool)$this->getCliArg( 'use-bagostuff' ); $fork &= function_exists( 'pcntl_fork' ); $fork &= !$this->cache instanceof HashBagOStuff; $fork &= !$this->cache instanceof EmptyBagOStuff; diff --git a/tests/phpunit/includes/parser/NewParserTest.php b/tests/phpunit/includes/parser/NewParserTest.php index 1dcc4cd825..0499f882e7 100644 --- a/tests/phpunit/includes/parser/NewParserTest.php +++ b/tests/phpunit/includes/parser/NewParserTest.php @@ -51,8 +51,8 @@ class NewParserTest extends MediaWikiTestCase { parent::setUp(); //Setup CLI arguments - if ( $this->getCliArg( 'regex=' ) ) { - $this->regex = $this->getCliArg( 'regex=' ); + if ( $this->getCliArg( 'regex' ) ) { + $this->regex = $this->getCliArg( 'regex' ); } else { # Matches anything $this->regex = ''; @@ -353,11 +353,11 @@ class NewParserTest extends MediaWikiTestCase { self::getOptionValue( 'wgLinkHolderBatchSize', $opts, 1000 ); $uploadDir = $this->getUploadDir(); - if ( $this->getCliArg( 'use-filebackend=' ) ) { + if ( $this->getCliArg( 'use-filebackend' ) ) { if ( self::$backendToUse ) { $backend = self::$backendToUse; } else { - $name = $this->getCliArg( 'use-filebackend=' ); + $name = $this->getCliArg( 'use-filebackend' ); $useConfig = array(); foreach ( $wgFileBackends as $conf ) { if ( $conf['name'] == $name ) { @@ -780,8 +780,8 @@ class NewParserTest extends MediaWikiTestCase { $files = $wgParserTestFiles; - if ( $this->getCliArg( 'file=' ) ) { - $files = array( $this->getCliArg( 'file=' ) ); + if ( $this->getCliArg( 'file' ) ) { + $files = array( $this->getCliArg( 'file' ) ); } $dict = $this->getFuzzInput( $files ); diff --git a/tests/phpunit/phpunit.php b/tests/phpunit/phpunit.php index daf0a3a995..d3231884a8 100755 --- a/tests/phpunit/phpunit.php +++ b/tests/phpunit/phpunit.php @@ -15,6 +15,18 @@ require_once dirname( dirname( __DIR__ ) ) . "/maintenance/Maintenance.php"; class PHPUnitMaintClass extends Maintenance { + public static $additionalOptions = array( + '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, + ); + public function __construct() { parent::__construct(); $this->addOption( @@ -30,6 +42,14 @@ 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.', false, false ); } public function finalSetup() { @@ -73,6 +93,8 @@ class PHPUnitMaintClass extends Maintenance { public function execute() { global $IP; + $this->forceFormatServerArgv(); + # Make sure we have --configuration or PHPUnit might complain if ( !in_array( '--configuration', $_SERVER['argv'] ) ) { //Hack to eliminate the need to use the Makefile (which sucks ATM) @@ -137,11 +159,45 @@ class PHPUnitMaintClass extends Maintenance { array_splice( $_SERVER['argv'], 1, 0, '--printer' ); } + foreach( self::$additionalOptions as $option => $default ) { + $key = array_search( '--' . $option, $_SERVER['argv'] ); + if( $key !== false ) { + unset( $_SERVER['argv'][$key] ); + if( $this->mParams[$option]['withArg'] ) { + self::$additionalOptions[$option] = $_SERVER['argv'][$key + 1]; + unset( $_SERVER['argv'][$key + 1] ); + } else { + self::$additionalOptions[$option] = true; + } + } + } + } public function getDbType() { return Maintenance::DB_ADMIN; } + + /** + * Force the format of elements in $_SERVER['argv'] + * - Split args such as "wiki=enwiki" into two separate arg elements "wiki" and "enwiki" + */ + private function forceFormatServerArgv() { + $argv = array(); + foreach( $_SERVER['argv'] as $key => $arg ) { + if( $key === 0 ) { + $argv[0] = $arg; + } elseif ( strstr( $arg, '=' ) ) { + foreach( explode( '=', $arg, 2 ) as $argPart ) { + $argv[] = $argPart; + } + } else { + $argv[] = $arg; + } + } + $_SERVER['argv'] = $argv; + } + } $maintClass = 'PHPUnitMaintClass'; @@ -171,4 +227,4 @@ if ( version_compare( PHP_VERSION, '5.4.0', '<' ) } ); } -MediaWikiPHPUnitCommand::main(); +PHPUnit_TextUI_Command::main();