diff --git a/lib/phpunit/bootstrap.php b/lib/phpunit/bootstrap.php index 560d7fef100..98d06dc7627 100644 --- a/lib/phpunit/bootstrap.php +++ b/lib/phpunit/bootstrap.php @@ -212,6 +212,8 @@ if (PHPUNIT_UTIL) { // is database and dataroot ready for testing? list($errorcode, $message) = phpunit_util::testing_ready_problem(); +// print some version info +phpunit_util::bootstrap_moodle_info(); if ($errorcode) { phpunit_bootstrap_error($errorcode, $message); } diff --git a/lib/phpunit/classes/util.php b/lib/phpunit/classes/util.php index ba15273c028..3e88015a96a 100644 --- a/lib/phpunit/classes/util.php +++ b/lib/phpunit/classes/util.php @@ -235,6 +235,72 @@ class phpunit_util extends testing_util { phpunit_util::reset_all_data(); } + /** + * Print some Moodle related info to console. + * @internal + * @static + * @return void + */ + public static function bootstrap_moodle_info() { + global $CFG; + + // All developers have to understand English, do not localise! + + $release = null; + require("$CFG->dirroot/version.php"); + + echo "Moodle $release, $CFG->dbtype"; + if ($hash = self::get_git_hash()) { + echo ", $hash"; + } + echo "\n"; + } + + /** + * Try to get current git hash of the Moodle in $CFG->dirroot. + * @return string null if unknown, sha1 hash if known + */ + public static function get_git_hash() { + global $CFG; + + // This is a bit naive, but it should mostly work for all platforms. + + if (!file_exists("$CFG->dirroot/.git/HEAD")) { + return null; + } + + $ref = file_get_contents("$CFG->dirroot/.git/HEAD"); + if ($ref === false) { + return null; + } + + $ref = trim($ref); + + if (strpos($ref, 'ref: ') !== 0) { + return null; + } + + $ref = substr($ref, 5); + + if (!file_exists("$CFG->dirroot/.git/$ref")) { + return null; + } + + $hash = file_get_contents("$CFG->dirroot/.git/$ref"); + + if ($hash === false) { + return null; + } + + $hash = trim($hash); + + if (strlen($hash) != 40) { + return null; + } + + return $hash; + } + /** * Returns original state of global variable. * @static