Merge branch 'MDL-50611-master' of git://github.com/LukeCarrier/moodle

This commit is contained in:
David Monllao 2015-06-23 10:25:36 +08:00
commit 8cb6117867
3 changed files with 44 additions and 14 deletions

View File

@ -157,7 +157,7 @@ class behat_command {
// Returning composer error code to avoid conflicts with behat and moodle error codes.
self::output_msg(get_string('errorcomposer', 'tool_behat'));
return BEHAT_EXITCODE_COMPOSER;
return TESTING_EXITCODE_COMPOSER;
}
// Behat test command.
@ -167,7 +167,7 @@ class behat_command {
// Returning composer error code to avoid conflicts with behat and moodle error codes.
self::output_msg(get_string('errorbehatcommand', 'tool_behat', self::get_behat_command()));
return BEHAT_EXITCODE_COMPOSER;
return TESTING_EXITCODE_COMPOSER;
}
// No empty values.

View File

@ -38,7 +38,6 @@ define('BEHAT_EXITCODE_REQUIREMENT', 251);
define('BEHAT_EXITCODE_PERMISSIONS', 252);
define('BEHAT_EXITCODE_REINSTALL', 253);
define('BEHAT_EXITCODE_INSTALL', 254);
define('BEHAT_EXITCODE_COMPOSER', 255);
define('BEHAT_EXITCODE_INSTALLED', 256);
/**
@ -458,4 +457,4 @@ function cli_execute_parallel($cmds, $cwd = null) {
}
}
return $processes;
}
}

View File

@ -25,6 +25,13 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Composer error exit status.
*
* @var integer
*/
define('TESTING_EXITCODE_COMPOSER', 255);
/**
* Returns relative path against current working directory,
* to be used for shell execution hints.
@ -170,22 +177,45 @@ function testing_error($errorcode, $text = '') {
* @return void exit() if something goes wrong
*/
function testing_update_composer_dependencies() {
// To restore the value after finishing.
$cwd = getcwd();
// Dirroot.
chdir(__DIR__ . '/../..');
// Set some paths.
$dirroot = dirname(dirname(__DIR__));
$composerpath = $dirroot . DIRECTORY_SEPARATOR . 'composer.phar';
$composerurl = 'https://getcomposer.org/composer.phar';
// Download composer.phar if we can.
if (!file_exists(__DIR__ . '/../../composer.phar')) {
passthru("curl http://getcomposer.org/installer | php", $code);
if ($code != 0) {
exit($code);
// Switch to Moodle's dirroot for easier path handling.
chdir($dirroot);
// Download or update composer.phar. Unfortunately we can't use the curl
// class in filelib.php as we're running within one of the test platforms.
if (!file_exists($composerpath)) {
$file = @fopen($composerpath, 'w+');
if ($file === false) {
$errordetails = error_get_last();
$error = sprintf("Unable to open composer.phar\nPHP error: %s",
$errordetails['message']);
testing_error(TESTING_EXITCODE_COMPOSER, $error);
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $composerurl);
curl_setopt($curl, CURLOPT_FILE, $file);
$result = curl_exec($curl);
$curlerrno = curl_errno($curl);
$curlerror = curl_error($curl);
curl_close($curl);
fclose($file);
if (!$result) {
$error = sprintf("Unable to download composer.phar\ncURL error (%d): %s",
$curlerrno, $curlerror);
testing_error(TESTING_EXITCODE_COMPOSER, $error);
}
} else {
// If it is already there update the installer.
passthru("php composer.phar self-update", $code);
if ($code != 0) {
exit($code);
@ -198,5 +228,6 @@ function testing_update_composer_dependencies() {
exit($code);
}
// Return to our original location.
chdir($cwd);
}