diff --git a/lib/behat/classes/behat_command.php b/lib/behat/classes/behat_command.php index c032b9592d9..48a9e1f0b91 100644 --- a/lib/behat/classes/behat_command.php +++ b/lib/behat/classes/behat_command.php @@ -82,8 +82,12 @@ class behat_command { // Cygwin uses linux-style directory separators. if ($custombyterm && testing_is_cygwin()) { - $exec = 'behat.bat'; $separator = '/'; + + // MinGW can not execute .bat scripts. + if (!testing_is_mingw()) { + $exec = 'behat.bat'; + } } return 'vendor' . $separator . 'bin' . $separator . $exec; } diff --git a/lib/behat/classes/behat_config_manager.php b/lib/behat/classes/behat_config_manager.php index aafb3709f18..26746a55215 100644 --- a/lib/behat/classes/behat_config_manager.php +++ b/lib/behat/classes/behat_config_manager.php @@ -149,7 +149,7 @@ class behat_config_manager { public static function get_steps_list_config_filepath() { global $USER; - // We don't cygwin-it as it is called using exec(). + // 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); diff --git a/lib/phpunit/classes/hint_resultprinter.php b/lib/phpunit/classes/hint_resultprinter.php index a04b32628d2..2d5dfe79b6c 100644 --- a/lib/phpunit/classes/hint_resultprinter.php +++ b/lib/phpunit/classes/hint_resultprinter.php @@ -108,7 +108,9 @@ class Hint_ResultPrinter extends PHPUnit_TextUI_ResultPrinter { $executable = 'phpunit'; if (testing_is_cygwin()) { $file = str_replace('\\', '/', $file); - $executable = 'phpunit.bat'; + if (!testing_is_mingw()) { + $executable = 'phpunit.bat'; + } } } diff --git a/lib/testing/lib.php b/lib/testing/lib.php index 4cee9b1b61c..c916367cc66 100644 --- a/lib/testing/lib.php +++ b/lib/testing/lib.php @@ -91,6 +91,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