Skip to content

Commit

Permalink
Merge branch 'MDL-43461_master' of git://github.com/dmonllao/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
Damyon Wiese committed Jan 15, 2014
2 parents 852c34e + ff7139d commit 7508094
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 9 deletions.
4 changes: 2 additions & 2 deletions admin/tool/behat/cli/util.php
Expand Up @@ -127,8 +127,8 @@
mtrace("Acceptance tests site dropped");
} else if ($options['enable']) {
behat_util::start_test_mode();
$runtestscommand = behat_command::get_behat_command() . ' --config '
. $CFG->behat_dataroot . DIRECTORY_SEPARATOR . 'behat' . DIRECTORY_SEPARATOR . 'behat.yml';
$runtestscommand = behat_command::get_behat_command(true) .
' --config ' . behat_config_manager::get_behat_cli_config_filepath();
mtrace("Acceptance tests environment enabled on $CFG->behat_wwwroot, to run the tests use:\n " . $runtestscommand);
} else if ($options['disable']) {
behat_util::stop_test_mode();
Expand Down
24 changes: 22 additions & 2 deletions lib/behat/classes/behat_command.php
Expand Up @@ -66,10 +66,30 @@ public static function get_behat_dir() {

/**
* Returns the executable path
*
* Allows returning a customized command for cygwin when the
* command is just displayed, when using exec(), system() and
* friends we stay with DIRECTORY_SEPARATOR as they use the
* normal cmd.exe (in Windows).
*
* @param bool $custombyterm If the provided command should depend on the terminal where it runs
* @return string
*/
public final static function get_behat_command() {
return 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'behat';
public final static function get_behat_command($custombyterm = false) {

$separator = DIRECTORY_SEPARATOR;
$exec = 'behat';

// Cygwin uses linux-style directory separators.
if ($custombyterm && testing_is_cygwin()) {
$separator = '/';

// MinGW can not execute .bat scripts.
if (!testing_is_mingw()) {
$exec = 'behat.bat';
}
}
return 'vendor' . $separator . 'bin' . $separator . $exec;
}

/**
Expand Down
23 changes: 19 additions & 4 deletions lib/behat/classes/behat_config_manager.php
Expand Up @@ -154,21 +154,36 @@ public static function get_components_steps_definitions() {
/**
* Returns the behat config file path used by the steps definition list
*
* Note this can only be called from web-based scripts so it will return the
* production dataroot not behat_dataroot. With this the steps definitions
* list is accessible without having to install the behat test site.
*
* @return string
*/
public static function get_steps_list_config_filepath() {
global $USER;

// We don't cygwin-it as it is called using exec() which uses cmd.exe.
$userdir = behat_command::get_behat_dir() . '/users/' . $USER->id;
make_writable_directory($userdir);

return $userdir . '/behat.yml';
}

/**
* Returns the behat config file path used by the behat cli command.
*
* @return string
*/
public static function get_behat_cli_config_filepath() {
global $CFG;

$command = $CFG->behat_dataroot . DIRECTORY_SEPARATOR . 'behat' . DIRECTORY_SEPARATOR . 'behat.yml';

// Cygwin uses linux-style directory separators.
if (testing_is_cygwin()) {
$command = str_replace('\\', '/', $command);
}

return $command;
}

/**
* Behat config file specifing the main context class,
* the required Behat extensions and Moodle test wwwroot.
Expand Down
4 changes: 3 additions & 1 deletion lib/phpunit/classes/hint_resultprinter.php
Expand Up @@ -108,7 +108,9 @@ protected function printDefectTrace(PHPUnit_Framework_TestFailure $defect) {
$executable = 'phpunit';
if (testing_is_cygwin()) {
$file = str_replace('\\', '/', $file);
$executable = 'phpunit.bat';
if (!testing_is_mingw()) {
$executable = 'phpunit.bat';
}
}
}

Expand Down
24 changes: 24 additions & 0 deletions lib/testing/lib.php
Expand Up @@ -97,6 +97,30 @@ function testing_is_cygwin() {
}
}

/**
* Returns whether a mingw CLI is running.
*
* MinGW sets $_SERVER['TERM'] to cygwin, but it
* can not run .bat files; this function may be useful
* when we need to output proposed commands to users
* using Windows CLI interfaces.
*
* @link http://sourceforge.net/p/mingw/bugs/1902
* @return bool
*/
function testing_is_mingw() {

if (!testing_is_cygwin()) {
return false;
}

if (!empty($_SERVER['MSYSTEM'])) {
return true;
}

return false;
}

/**
* Mark empty dataroot to be used for testing.
* @param string $dataroot The dataroot directory
Expand Down

0 comments on commit 7508094

Please sign in to comment.