Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
<?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']);