mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
Merge branch 'w47_MDL-36701_m24_composer' of git://github.com/skodak/moodle
This commit is contained in:
commit
020e338dee
6 changed files with 61 additions and 30 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -26,3 +26,7 @@ CVS
|
||||||
/.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/
|
||||||
|
|
|
@ -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
6
composer.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"require": {
|
||||||
|
"phpunit/phpunit": "3.7.*",
|
||||||
|
"phpunit/dbUnit": "1.2.*"
|
||||||
|
}
|
||||||
|
}
|
|
@ -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");
|
||||||
|
|
|
@ -5,22 +5,35 @@ PHPUnit testing support in Moodle
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
* [Moodle Dev wiki](http://docs.moodle.org/dev/PHPUnit)
|
* [Moodle Dev wiki](http://docs.moodle.org/dev/PHPUnit)
|
||||||
* [PHPUnit online documentaion](http://www.phpunit.de/manual/current/en/)
|
* [PHPUnit online documentation](http://www.phpunit.de/manual/current/en/)
|
||||||
|
* [Composer dependency manager](http://getcomposer.org/)
|
||||||
|
|
||||||
|
|
||||||
Installation
|
Composer installation
|
||||||
------------
|
---------------------
|
||||||
|
Composer is a new dependency manager for PHP projects.
|
||||||
|
It installs PHP libraries into /vendor/ subdirectory inside your moodle dirroot.
|
||||||
|
|
||||||
|
1. install Composer - http://getcomposer.org/doc/00-intro.md
|
||||||
|
2. go to your moodle dirroot and execute `php composer.phar install`
|
||||||
|
|
||||||
|
|
||||||
|
PEAR installation (not recommended)
|
||||||
|
-----------------------------------
|
||||||
|
PEAR is a framework and distribution system for reusable PHP components.
|
||||||
|
The packages installed via PEAR are available in all PHP projects.
|
||||||
|
|
||||||
1. install PEAR package manager - see [PEAR Manual](http://pear.php.net/manual/en/installation.php)
|
1. install PEAR package manager - see [PEAR Manual](http://pear.php.net/manual/en/installation.php)
|
||||||
2. install PHPUnit package and phpunit/DbUnit extension - see [PHPUnit installation documentation](http://www.phpunit.de/manual/current/en/installation.html)
|
2. install PHPUnit package and phpunit/DbUnit extension - see [PHPUnit installation documentation](http://www.phpunit.de/manual/current/en/installation.html)
|
||||||
3. edit main config.php - add `$CFG->phpunit_prefix` and `$CFG->phpunit_dataroot` - see config-dist.php
|
3. edit main config.php - add `$CFG->phpunit_prefix` and `$CFG->phpunit_dataroot` - see config-dist.php
|
||||||
4. execute `php admin/tool/phpunit/cli/init.php` to initialise the test environemnt, repeat it after every upgrade or installation of plugins
|
4. execute `php admin/tool/phpunit/cli/init.php` to initialise the test environment, repeat it after every upgrade or installation of plugins
|
||||||
|
|
||||||
|
|
||||||
Test execution
|
Test execution
|
||||||
--------------
|
--------------
|
||||||
* execute `phpunit` from dirroot directory
|
* execute `vendor/bin/phpunit` (or `phpunit` if you use PEAR) from dirroot directory
|
||||||
* you can execute a single test case class using class name followed by path to test file `phpunit core_phpunit_basic_testcase lib/tests/phpunit_test.php`
|
* you can execute a single test case class using class name followed by path to test file `vendor/bin/phpunit core_phpunit_basic_testcase lib/tests/phpunit_test.php`
|
||||||
* it is also possible to create custom configuration files in xml format and use `phpunit -c mytestsuites.xml`
|
* it is also possible to create custom configuration files in xml format and use `vendor/bin/phpunit -c mytestsuites.xml`
|
||||||
|
|
||||||
|
|
||||||
How to add more tests?
|
How to add more tests?
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue