Remove MediaWikiPHPUnitCommand
authoraddshore <addshorewiki@gmail.com>
Mon, 5 May 2014 16:10:07 +0000 (17:10 +0100)
committerOri.livneh <ori@wikimedia.org>
Sat, 2 Aug 2014 21:35:34 +0000 (21:35 +0000)
All functionality has been moved to other places

Change-Id: I6b6b0ef846bc63108c4dff9e17098432fd9d1697

tests/TestsAutoLoader.php
tests/phpunit/MediaWikiPHPUnitCommand.php [deleted file]
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/filerepo/StoreBatchTest.php
tests/phpunit/includes/jobqueue/JobQueueTest.php
tests/phpunit/includes/objectcache/BagOStuffTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/phpunit.php

index eee34de..b56890b 100644 (file)
@@ -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 (file)
index 62b9cfd..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {
-
-       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() {
-               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 <<<EOT
-
-ParserTest-specific options:
-  --regex="<regex>"        Only run parser tests that match the given regex
-  --file="<filename>"      File describing parser tests
-  --keep-uploads           Re-use the same upload directory for each test, don't delete it
-
-Database options:
-  --use-normal-tables      Use normal DB tables.
-  --reuse-db               Init DB only if tables are missing and keep after finish.
-
-EOT;
-       }
-}
index 02330a4..70cc8de 100644 (file)
@@ -668,8 +668,8 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @return mixed
         */
        public function getCliArg( $offset ) {
-               if ( isset( MediaWikiPHPUnitCommand::$additionalOptions[$offset] ) ) {
-                       return MediaWikiPHPUnitCommand::$additionalOptions[$offset];
+               if ( isset( PHPUnitMaintClass::$additionalOptions[$offset] ) ) {
+                       return PHPUnitMaintClass::$additionalOptions[$offset];
                }
        }
 
@@ -679,7 +679,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @param mixed $value
         */
        public function setCliArg( $offset, $value ) {
-               MediaWikiPHPUnitCommand::$additionalOptions[$offset] = $value;
+               PHPUnitMaintClass::$additionalOptions[$offset] = $value;
        }
 
        /**
index a7bfbfe..9558cc7 100644 (file)
@@ -21,11 +21,11 @@ class FileBackendTest extends MediaWikiTestCase {
                parent::setUp();
                $uniqueId = time() . '-' . mt_rand();
                $tmpPrefix = wfTempDir() . '/filebackend-unittest-' . $uniqueId;
-               if ( $this->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 ) {
index a79866e..9cc2efb 100644 (file)
@@ -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 ) {
index 70374dc..69e4006 100644 (file)
@@ -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'." );
                        }
index 1972bb5..160ddad 100644 (file)
@@ -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;
index 1dcc4cd..0499f88 100644 (file)
@@ -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 );
index daf0a3a..d323188 100755 (executable)
@@ -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();