source: moodle/trunk/fuentes/admin/tool/phpunit/cli/util.php @ 136

Last change on this file since 136 was 136, checked in by mabarracus, 4 years ago

Ported code to xenial

File size: 4.5 KB
Line 
1<?php
2// This file is part of Moodle - http://moodle.org/
3//
4// Moodle is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// Moodle is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
17/**
18 * PHPUnit related utilities.
19 *
20 * Exit codes: {@see phpunit_bootstrap_error()}
21 *
22 * @package    tool_phpunit
23 * @copyright  2012 Petr Skoda {@link http://skodak.org}
24 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25 */
26
27if (isset($_SERVER['REMOTE_ADDR'])) {
28    die; // no access from web!
29}
30
31define('IGNORE_COMPONENT_CACHE', true);
32
33require_once(__DIR__.'/../../../../lib/clilib.php');
34require_once(__DIR__.'/../../../../lib/phpunit/bootstraplib.php');
35require_once(__DIR__.'/../../../../lib/testing/lib.php');
36
37// now get cli options
38list($options, $unrecognized) = cli_get_params(
39    array(
40        'drop'                  => false,
41        'install'               => false,
42        'buildconfig'           => false,
43        'buildcomponentconfigs' => false,
44        'diag'                  => false,
45        'run'                   => false,
46        'help'                  => false,
47    ),
48    array(
49        'h' => 'help'
50    )
51);
52
53if (file_exists(__DIR__.'/../../../../vendor/phpunit/phpunit/composer.json')) {
54    // Composer packages present.
55    require_once(__DIR__.'/../../../../vendor/autoload.php');
56
57} else {
58    // Note: installation via PEAR is not supported any more.
59    phpunit_bootstrap_error(PHPUNIT_EXITCODE_PHPUNITMISSING);
60}
61
62if ($options['install'] or $options['drop']) {
63    define('CACHE_DISABLE_ALL', true);
64}
65
66if ($options['run']) {
67    unset($options);
68    unset($unrecognized);
69
70    foreach ($_SERVER['argv'] as $k=>$v) {
71        if (strpos($v, '--run') === 0) {
72            unset($_SERVER['argv'][$k]);
73            $_SERVER['argc'] = $_SERVER['argc'] - 1;
74        }
75    }
76    $_SERVER['argv'] = array_values($_SERVER['argv']);
77    PHPUnit_TextUI_Command::main();
78    exit(0);
79}
80
81define('PHPUNIT_UTIL', true);
82
83require(__DIR__ . '/../../../../lib/phpunit/bootstrap.php');
84
85// from now on this is a regular moodle CLI_SCRIPT
86
87require_once($CFG->libdir.'/adminlib.php');
88require_once($CFG->libdir.'/upgradelib.php');
89require_once($CFG->libdir.'/clilib.php');
90require_once($CFG->libdir.'/installlib.php');
91
92if ($unrecognized) {
93    $unrecognized = implode("\n  ", $unrecognized);
94    cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
95}
96
97$diag = $options['diag'];
98$drop = $options['drop'];
99$install = $options['install'];
100$buildconfig = $options['buildconfig'];
101$buildcomponentconfigs = $options['buildcomponentconfigs'];
102
103if ($options['help'] or (!$drop and !$install and !$buildconfig and !$buildcomponentconfigs and !$diag)) {
104    $help = "Various PHPUnit utility functions
105
106Options:
107--drop         Drop database and dataroot
108--install      Install database
109--diag         Diagnose installation and return error code only
110--run          Execute PHPUnit tests (alternative for standard phpunit binary)
111--buildconfig  Build /phpunit.xml from /phpunit.xml.dist that runs all tests
112--buildcomponentconfigs
113               Build distributed phpunit.xml files for each component
114
115-h, --help     Print out this help
116
117Example:
118\$ php ".testing_cli_argument_path('/admin/tool/phpunit/cli/util.php')." --install
119";
120    echo $help;
121    exit(0);
122}
123
124if ($diag) {
125    list($errorcode, $message) = phpunit_util::testing_ready_problem();
126    if ($errorcode) {
127        phpunit_bootstrap_error($errorcode, $message);
128    }
129    exit(0);
130
131} else if ($buildconfig) {
132    if (phpunit_util::build_config_file()) {
133        exit(0);
134    } else {
135        phpunit_bootstrap_error(PHPUNIT_EXITCODE_CONFIGWARNING, 'Can not create main /phpunit.xml configuration file, verify dirroot permissions');
136    }
137
138} else if ($buildcomponentconfigs) {
139    phpunit_util::build_component_config_files();
140    exit(0);
141
142} else if ($drop) {
143    // make sure tests do not run in parallel
144    test_lock::acquire('phpunit');
145    phpunit_util::drop_site(true);
146    // note: we must stop here because $CFG is messed up and we can not reinstall, sorry
147    exit(0);
148
149} else if ($install) {
150    phpunit_util::install_site();
151    exit(0);
152}
Note: See TracBrowser for help on using the repository browser.