<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* All in one init script - PHP version.
*
* @package tool_phpunit
* @copyright 2012 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
if (isset($_SERVER['REMOTE_ADDR'])) {
die; // no access from web!
}
// Force OPcache reset if used, we do not want any stale caches
// when preparing test environment.
if (function_exists('opcache_reset')) {
opcache_reset();
}
define('IGNORE_COMPONENT_CACHE', true);
require_once(__DIR__.'/../../../../lib/clilib.php');
require_once(__DIR__.'/../../../../lib/phpunit/bootstraplib.php');
require_once(__DIR__.'/../../../../lib/testing/lib.php');
> list($options, $unrecognized) = cli_get_params(
echo "Initialising Moodle PHPUnit test environment...\n";
> [
testing_update_composer_dependencies();
> 'help' => false,
> 'disable-composer' => false,
$output = null;
> 'composer-upgrade' => true,
exec('php --version', $output, $code);
> 'composer-self-update' => true,
if ($code != 0) {
> ],
phpunit_bootstrap_error(1, 'Can not execute \'php\' binary.');
> [
}
> 'h' => 'help',
> ]
chdir(__DIR__);
> );
$output = null;
>
exec("php util.php --diag", $output, $code);
> $help = "
if ($code == 0) {
> Utilities to initialise the PHPUnit test site.
// everything is ready
>
> Usage:
} else if ($code == PHPUNIT_EXITCODE_INSTALL) {
> php init.php [--no-composer-self-update] [--no-composer-upgrade]
passthru("php util.php --install", $code);
> [--help]
if ($code != 0) {
>
exit($code);
> --no-composer-self-update
}
> Prevent upgrade of the composer utility using its self-update command
>
} else if ($code == PHPUNIT_EXITCODE_REINSTALL) {
> --no-composer-upgrade
passthru("php util.php --drop", $code);
> Prevent update development dependencies using composer
passthru("php util.php --install", $code);
>
if ($code != 0) {
> --disable-composer
exit($code);
> A shortcut to disable composer self-update and dependency update
}
> Note: Installation of composer and/or dependencies will still happen as required
>
} else {
> -h, --help Print out this help
echo implode("\n", $output)."\n";
>
exit($code);
> Example from Moodle root directory:
}
> \$ php admin/tool/phpunit/cli/init.php
> ";
passthru("php util.php --buildconfig", $code);
>
> if (!empty($options['help'])) {
echo "\n";
> echo $help;
echo "PHPUnit test environment setup complete.\n";
> exit(0);
exit(0);
> }
>
< testing_update_composer_dependencies();
>
> if ($options['disable-composer']) {
> // Disable self-update and upgrade easily.
> // Note: Installation will still occur regardless of this setting.
> $options['composer-self-update'] = false;
> $options['composer-upgrade'] = false;
> }
>
> // Install and update composer and dependencies as required.
> testing_update_composer_dependencies($options['composer-self-update'], $options['composer-upgrade']);