X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fphpunit.php;h=65445447f5ddc5f47bacf24dfd17862701c18eda;hb=633b6532fa4df83df61fc2c5b9003c1003e7af5b;hp=b1cca4ac2e4b6b669ddec86bf11b6a16d45789bd;hpb=211d42183601e56f67ccd6faa889185e52656085;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/phpunit.php b/tests/phpunit/phpunit.php index b1cca4ac2e..65445447f5 100755 --- a/tests/phpunit/phpunit.php +++ b/tests/phpunit/phpunit.php @@ -14,35 +14,15 @@ define( 'MW_PHPUNIT_TEST', true ); require_once dirname( dirname( __DIR__ ) ) . "/maintenance/Maintenance.php"; class PHPUnitMaintClass extends Maintenance { - - public static $additionalOptions = [ - 'file' => false, - 'use-filebackend' => false, - 'use-bagostuff' => false, - 'use-jobqueue' => false, - 'use-normal-tables' => false, - 'mwdebug' => false, - 'reuse-db' => false, - 'wiki' => false, - 'profiler' => false, - ]; - public function __construct() { parent::__construct(); $this->setAllowUnregisteredOptions( true ); - $this->addOption( - 'with-phpunitclass', - 'Class name of the PHPUnit entry point to use', - false, - true - ); $this->addOption( 'debug-tests', - 'Log testing activity to the PHPUnitCommand log channel.', + 'Log testing activity to the PHPUnitCommand log channel (deprecated, always on).', false, # not required false # no arg needed ); - $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 ); @@ -64,8 +44,6 @@ class PHPUnitMaintClass extends Maintenance { } public function execute() { - global $IP; - // Deregister handler from MWExceptionHandler::installHandle so that PHPUnit's own handler // stays in tact. // Has to in execute() instead of finalSetup(), because finalSetup() runs before @@ -74,62 +52,42 @@ class PHPUnitMaintClass extends Maintenance { $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) - array_splice( $_SERVER['argv'], 1, 0, - [ '--configuration', $IP . '/tests/phpunit/suite.xml' ] ); - } - - $phpUnitClass = PHPUnit_TextUI_Command::class; - - if ( $this->hasOption( 'with-phpunitclass' ) ) { - $phpUnitClass = $this->getOption( 'with-phpunitclass' ); - - # Cleanup $args array so the option and its value do not - # pollute PHPUnit - $key = array_search( '--with-phpunitclass', $_SERVER['argv'] ); - unset( $_SERVER['argv'][$key] ); // the option - unset( $_SERVER['argv'][$key + 1] ); // its value - $_SERVER['argv'] = array_values( $_SERVER['argv'] ); - } - - $key = array_search( '--debug-tests', $_SERVER['argv'] ); - if ( $key !== false && array_search( '--printer', $_SERVER['argv'] ) === false ) { - unset( $_SERVER['argv'][$key] ); - array_splice( $_SERVER['argv'], 1, 0, 'MediaWikiPHPUnitTestListener' ); - 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; - } - } - } - 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' ) ? + fwrite( STDERR, defined( 'HHVM_VERSION' ) ? 'Using HHVM ' . HHVM_VERSION . ' (' . PHP_VERSION . ")\n" : - 'Using PHP ' . PHP_VERSION . "\n"; + 'Using PHP ' . PHP_VERSION . "\n" ); + + // Tell PHPUnit to ignore options meant for MediaWiki + $ignore = []; + foreach ( $this->mParams as $name => $param ) { + if ( empty( $param['withArg'] ) ) { + $ignore[] = $name; + } else { + $ignore[] = "$name="; + } + } + + // Pass through certain options to MediaWikiTestCase + $cliArgs = []; + foreach ( + [ + 'use-filebackend', + 'use-bagostuff', + 'use-jobqueue', + 'use-normal-tables', + 'reuse-db' + ] as $name + ) { + $cliArgs[$name] = $this->getOption( $name ); + } - $phpUnitClass::main(); + $command = new MediaWikiPHPUnitCommand( $ignore, $cliArgs ); + $command->run( $_SERVER['argv'], true ); } public function getDbType() {