Skip to content

Commit

Permalink
Merge branch 'w49_MDL-36817_m23_composer' of git://github.com/skodak/…
Browse files Browse the repository at this point in the history
…moodle into MOODLE_23_STABLE
  • Loading branch information
Aparup Banerjee committed Dec 11, 2012
2 parents f95ba65 + 0c11154 commit 4e66b89
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 30 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Expand Up @@ -25,4 +25,8 @@ CVS
/.project
/.buildpath
/.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/
23 changes: 5 additions & 18 deletions admin/tool/phpunit/cli/util.php
Expand Up @@ -39,7 +39,6 @@
'buildconfig' => false,
'buildcomponentconfigs' => false,
'diag' => false,
'phpunitdir' => false,
'run' => false,
'help' => false,
),
Expand All @@ -48,24 +47,12 @@
)
);

if ($options['phpunitdir']) {
// nasty skodak's hack for testing of future PHPUnit versions - intentionally not documented
if (!file_exists($options['phpunitdir'])) {
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);
if (file_exists(__DIR__.'/../../../../vendor/autoload.php')) {
// Composer packages present.
require_once(__DIR__.'/../../../../vendor/autoload.php');
}

// verify PHPUnit libs are loaded
// Verify PHPUnit libs can be loaded.
if (!include_once('PHPUnit/Autoload.php')) {
phpunit_bootstrap_error(PHPUNIT_EXITCODE_PHPUNITMISSING);
}
Expand All @@ -75,7 +62,7 @@
unset($unrecognized);

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]);
$_SERVER['argc'] = $_SERVER['argc'] - 1;
}
Expand Down
6 changes: 6 additions & 0 deletions composer.json
@@ -0,0 +1,6 @@
{
"require-dev": {
"phpunit/phpunit": "3.7.*",
"phpunit/dbUnit": "1.2.*"
}
}
26 changes: 22 additions & 4 deletions lib/phpunit/classes/hint_resultprinter.php
Expand Up @@ -88,10 +88,28 @@ protected function printDefectTrace(PHPUnit_Framework_TestFailure $defect) {
$file = substr($file, strlen($cwd)+1);
}

$executable = 'phpunit';
if (phpunit_bootstrap_is_cygwin()) {
$file = str_replace('\\', '/', $file);
$executable = 'phpunit.bat';
$executable = null;

if (isset($_SERVER['argv'][0])) {
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");
Expand Down
27 changes: 20 additions & 7 deletions lib/phpunit/readme.md
Expand Up @@ -5,22 +5,35 @@ PHPUnit testing support in Moodle
Documentation
-------------
* [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 --dev`


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)
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
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
--------------
* execute `phpunit` 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`
* it is also possible to create custom configuration files in xml format and use `phpunit -c mytestsuites.xml`
* 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 `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 `vendor/bin/phpunit -c mytestsuites.xml`


How to add more tests?
Expand Down
3 changes: 3 additions & 0 deletions lib/tests/pagelib_test.php
Expand Up @@ -187,7 +187,10 @@ public function test_set_context() {
}

public function test_pagetype_defaults_to_script() {
global $SCRIPT;
// Exercise SUT and validate
$SCRIPT = '/index.php';
$this->testpage->initialise_default_pagetype();
$this->assertEquals('site-index', $this->testpage->pagetype);
}

Expand Down

0 comments on commit 4e66b89

Please sign in to comment.