Merge branch 'MDL-38878_master' of git://github.com/dmonllao/moodle
authorDamyon Wiese <damyon@moodle.com>
Mon, 8 Apr 2013 05:02:38 +0000 (13:02 +0800)
committerDamyon Wiese <damyon@moodle.com>
Mon, 8 Apr 2013 05:02:38 +0000 (13:02 +0800)
admin/tool/behat/cli/init.php
lib/testing/lib.php

index ca68c16..fd11b08 100644 (file)
@@ -41,14 +41,22 @@ if ($code == 0) {
     echo "Behat test environment already installed\n";
 
 } else if ($code == BEHAT_EXITCODE_INSTALL) {
+
+    testing_update_composer_dependencies();
+
     // Behat and dependencies are installed and we need to install the test site.
+    chdir(__DIR__);
     passthru("php util.php --install", $code);
     if ($code != 0) {
         exit($code);
     }
 
 } else if ($code == BEHAT_EXITCODE_REINSTALL) {
+
+    testing_update_composer_dependencies();
+
     // Test site data is outdated.
+    chdir(__DIR__);
     passthru("php util.php --drop", $code);
     if ($code != 0) {
         exit($code);
@@ -62,19 +70,7 @@ if ($code == 0) {
 } else if ($code == BEHAT_EXITCODE_COMPOSER) {
     // Missing Behat dependencies.
 
-    // Changing to moodle dirroot to run composer related commands at project level.
-    chdir(__DIR__ . '/../../../..');
-    if (!file_exists(__DIR__ . '/../../../../composer.phar')) {
-        passthru("curl http://getcomposer.org/installer | php", $code);
-        if ($code != 0) {
-            exit($code);
-        }
-    }
-
-    passthru("php composer.phar update --dev", $code);
-    if ($code != 0) {
-        exit($code);
-    }
+    testing_update_composer_dependencies();
 
     // Returning to admin/tool/behat/cli.
     chdir(__DIR__);
index 0713d6b..4cee9b1 100644 (file)
@@ -128,3 +128,42 @@ function testing_error($errorcode, $text = '') {
     echo($text."\n");
     exit($errorcode);
 }
+
+/**
+ * Updates the composer installer and the dependencies.
+ *
+ * Includes --dev dependencies.
+ *
+ * @return void exit() if something goes wrong
+ */
+function testing_update_composer_dependencies() {
+
+    // To restore the value after finishing.
+    $cwd = getcwd();
+
+    // Dirroot.
+    chdir(__DIR__ . '/../..');
+
+    // 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);
+        }
+    } else {
+
+        // If it is already there update the installer.
+        passthru("php composer.phar self-update", $code);
+        if ($code != 0) {
+            exit($code);
+        }
+    }
+
+    // Update composer dependencies.
+    passthru("php composer.phar update --dev", $code);
+    if ($code != 0) {
+        exit($code);
+    }
+
+    chdir($cwd);
+}