From ba0e10425fb58f76e2e674084fd9dad97eceaa7a Mon Sep 17 00:00:00 2001 From: David Monllao Date: Tue, 23 Jun 2015 10:11:56 +0800 Subject: [PATCH] MDL-50611 testing: Extra http status code checking --- lib/behat/lib.php | 1 + lib/testing/lib.php | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/behat/lib.php b/lib/behat/lib.php index d80486ec4dd..0fea6d0fb64 100644 --- a/lib/behat/lib.php +++ b/lib/behat/lib.php @@ -38,6 +38,7 @@ 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); /** diff --git a/lib/testing/lib.php b/lib/testing/lib.php index bfe0c303c0d..7bfd3c02095 100644 --- a/lib/testing/lib.php +++ b/lib/testing/lib.php @@ -28,7 +28,7 @@ /** * Composer error exit status. * - * @var integer + * @var int */ define('TESTING_EXITCODE_COMPOSER', 255); @@ -191,10 +191,10 @@ function testing_update_composer_dependencies() { // 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+'); + $file = @fopen($composerpath, 'w'); if ($file === false) { $errordetails = error_get_last(); - $error = sprintf("Unable to open composer.phar\nPHP error: %s", + $error = sprintf("Unable to create composer.phar\nPHP error: %s", $errordetails['message']); testing_error(TESTING_EXITCODE_COMPOSER, $error); } @@ -206,6 +206,7 @@ function testing_update_composer_dependencies() { $curlerrno = curl_errno($curl); $curlerror = curl_error($curl); + $curlinfo = curl_getinfo($curl); curl_close($curl); fclose($file); @@ -214,6 +215,14 @@ function testing_update_composer_dependencies() { $error = sprintf("Unable to download composer.phar\ncURL error (%d): %s", $curlerrno, $curlerror); testing_error(TESTING_EXITCODE_COMPOSER, $error); + } else if ($curlinfo['http_code'] === 404) { + if (file_exists($composerpath)) { + // Deleting the resource as it would contain HTML. + unlink($composerpath); + } + $error = sprintf("Unable to download composer.phar\n" . + "404 http status code fetching $composerurl"); + testing_error(TESTING_EXITCODE_COMPOSER, $error); } } else { passthru("php composer.phar self-update", $code);