CommentStore: Hard-deprecate newKey()
[lhc/web/wiklou.git] / tests / phpunit / MediaWikiPHPUnitCommand.php
index 7241f0a..a506dcb 100644 (file)
 <?php
 
 class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {
+       private $cliArgs;
 
-       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,
-               'debug-tests' => false,
-       );
-
-       public function __construct() {
-               foreach ( self::$additionalOptions as $option => $default ) {
-                       $this->longOptions[$option] = $option . 'Handler';
-               }
-       }
-
-       protected function handleArguments( array $argv ) {
-               parent::handleArguments( $argv );
-
-               if ( !isset( $this->arguments['listeners'] ) ) {
-                       $this->arguments['listeners'] = array();
-               }
-
-               foreach ( $this->options[0] as $option ) {
-                       switch ( $option[0] ) {
-                               case '--debug-tests':
-                                       $this->arguments['listeners'][] = new MediaWikiPHPUnitTestListener( 'PHPUnitCommand' );
-                                       break;
-                       }
+       public function __construct( $ignorableOptions, $cliArgs ) {
+               $ignore = function ( $arg ) {
+               };
+               foreach ( $ignorableOptions as $option ) {
+                       $this->longOptions[$option] = $ignore;
                }
+               $this->cliArgs = $cliArgs;
        }
 
-       public static function main( $exit = true ) {
-               $command = new self;
-
-               # Makes MediaWiki PHPUnit directory includable so the PHPUnit will
-               # be able to resolve relative files inclusion such as suites/*
-               # PHPUnit uses stream_resolve_include_path() internally
-               # See bug 32022
-               set_include_path(
-                       __DIR__
-                               . PATH_SEPARATOR
-                               . get_include_path()
-               );
-
-               $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];
+       protected function handleCustomTestSuite() {
+               // Use our suite.xml
+               if ( !isset( $this->arguments['configuration'] ) ) {
+                       $this->arguments['configuration'] = __DIR__ . '/suite.xml';
                }
-       }
-
-       public function run( array $argv, $exit = true ) {
-               wfProfileIn( __METHOD__ );
-
-               $ret = parent::run( $argv, false );
-
-               wfProfileOut( __METHOD__ );
-
-               // Return to real wiki db, so profiling data is preserved
-               MediaWikiTestCase::teardownTestDB();
-
-               // Log profiling data, e.g. in the database or UDP
-               wfLogProfilingData();
 
-               if ( $exit ) {
-                       exit( $ret );
-               } else {
-                       return $ret;
-               }
+               // Add our own listener
+               $this->arguments['listeners'][] = new MediaWikiPHPUnitTestListener;
        }
 
-       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.
-
-Debugging options:
-  --debug-tests            Log testing activity to the PHPUnitCommand log channel.
-
-EOT;
+       protected function createRunner() {
+               $runner = new MediaWikiTestRunner;
+               $runner->setMwCliArgs( $this->cliArgs );
+               return $runner;
        }
 }