MDL-36701 support for PHPUnit installation via Composer packaging system

See http://getcomposer.org/doc/00-intro.md
This commit is contained in:
Petr Škoda 2012-11-19 22:16:17 +01:00
parent 2d7c5eeeea
commit 3a7bc16ad7
5 changed files with 41 additions and 23 deletions

6
.gitignore vendored
View File

@ -25,4 +25,8 @@ CVS
/.project /.project
/.buildpath /.buildpath
/.cache /.cache
phpunit.xml phpunit.xml
# Composer support - only composer.json is to be in git, the rest is installed in each checkout.
composer.phar
composer.lock
/vendor/

View File

@ -39,7 +39,6 @@ list($options, $unrecognized) = cli_get_params(
'buildconfig' => false, 'buildconfig' => false,
'buildcomponentconfigs' => false, 'buildcomponentconfigs' => false,
'diag' => false, 'diag' => false,
'phpunitdir' => false,
'run' => false, 'run' => false,
'help' => false, 'help' => false,
), ),
@ -48,24 +47,12 @@ list($options, $unrecognized) = cli_get_params(
) )
); );
if ($options['phpunitdir']) { if (file_exists(__DIR__.'/../../../../vendor/autoload.php')) {
// nasty skodak's hack for testing of future PHPUnit versions - intentionally not documented // Composer packages present.
if (!file_exists($options['phpunitdir'])) { require_once(__DIR__.'/../../../../vendor/autoload.php');
cli_error('Invalid custom PHPUnit lib location');
}
$files = scandir($options['phpunitdir']);
foreach ($files as $file) {
$path = $options['phpunitdir'].'/'.$file;
if (!is_dir($path) or strpos($file, '.') === 0) {
continue;
}
ini_set('include_path', $path . PATH_SEPARATOR . ini_get('include_path'));
}
unset($files);
unset($file);
} }
// verify PHPUnit libs are loaded // Verify PHPUnit libs can be loaded.
if (!include_once('PHPUnit/Autoload.php')) { if (!include_once('PHPUnit/Autoload.php')) {
phpunit_bootstrap_error(PHPUNIT_EXITCODE_PHPUNITMISSING); phpunit_bootstrap_error(PHPUNIT_EXITCODE_PHPUNITMISSING);
} }
@ -75,7 +62,7 @@ if ($options['run']) {
unset($unrecognized); unset($unrecognized);
foreach ($_SERVER['argv'] as $k=>$v) { foreach ($_SERVER['argv'] as $k=>$v) {
if (strpos($v, '--run') === 0 or strpos($v, '--phpunitdir') === 0) { if (strpos($v, '--run') === 0) {
unset($_SERVER['argv'][$k]); unset($_SERVER['argv'][$k]);
$_SERVER['argc'] = $_SERVER['argc'] - 1; $_SERVER['argc'] = $_SERVER['argc'] - 1;
} }

6
composer.json Normal file
View File

@ -0,0 +1,6 @@
{
"require": {
"phpunit/phpunit": "3.7.*",
"phpunit/dbUnit": "1.2.*"
}
}

View File

@ -88,10 +88,28 @@ class Hint_ResultPrinter extends PHPUnit_TextUI_ResultPrinter {
$file = substr($file, strlen($cwd)+1); $file = substr($file, strlen($cwd)+1);
} }
$executable = 'phpunit'; $executable = null;
if (phpunit_bootstrap_is_cygwin()) {
$file = str_replace('\\', '/', $file); if (isset($_SERVER['argv'][0])) {
$executable = 'phpunit.bat'; if (preg_match('/phpunit(\.bat|\.cmd)?$/', $_SERVER['argv'][0])) {
$executable = $_SERVER['argv'][0];
for($i=1;$i<count($_SERVER['argv']);$i++) {
if (!isset($_SERVER['argv'][$i])) {
break;
}
if (in_array($_SERVER['argv'][$i], array('--colors', '--verbose', '-v', '--debug', '--strict'))) {
$executable .= ' '.$_SERVER['argv'][$i];
}
}
}
}
if (!$executable) {
$executable = 'phpunit';
if (phpunit_bootstrap_is_cygwin()) {
$file = str_replace('\\', '/', $file);
$executable = 'phpunit.bat';
}
} }
$this->write("\nTo re-run:\n $executable $testName $file\n"); $this->write("\nTo re-run:\n $executable $testName $file\n");

View File

@ -187,7 +187,10 @@ class moodle_page_test extends advanced_testcase {
} }
public function test_pagetype_defaults_to_script() { public function test_pagetype_defaults_to_script() {
global $SCRIPT;
// Exercise SUT and validate // Exercise SUT and validate
$SCRIPT = '/index.php';
$this->testpage->initialise_default_pagetype();
$this->assertEquals('site-index', $this->testpage->pagetype); $this->assertEquals('site-index', $this->testpage->pagetype);
} }