Exemple #1
0
        $argv = [];
        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';
require RUN_MAINTENANCE_IF_MAIN;
if (!class_exists('PHPUnit_Framework_TestCase')) {
    echo "PHPUnit not found. Please install it and other dev dependencies by\nrunning `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\nthe 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();
Exemple #2
0
 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
     // doMaintenance.php includes Setup.php, which calls MWExceptionHandler::installHandle().
     restore_error_handler();
     $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';
     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\n\t\trunning `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\n\t\tthe 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();
 }