From f070dd126f7a2d63144186b73c2313badc7a2a4c Mon Sep 17 00:00:00 2001
From: Brendan Heywood
Date: Fri, 17 Jan 2020 22:25:27 +1100
Subject: [PATCH] MDL-67726 tool_phpunit: Removed webrunner tool
---
admin/tool/phpunit/settings.php | 2 -
admin/tool/phpunit/upgrade.txt | 4 +
admin/tool/phpunit/webrunner.php | 192 -------------------------------
lib/phpunit/classes/util.php | 12 +-
4 files changed, 6 insertions(+), 204 deletions(-)
create mode 100644 admin/tool/phpunit/upgrade.txt
delete mode 100644 admin/tool/phpunit/webrunner.php
diff --git a/admin/tool/phpunit/settings.php b/admin/tool/phpunit/settings.php
index efefd32dfab..e42049bbbb0 100644
--- a/admin/tool/phpunit/settings.php
+++ b/admin/tool/phpunit/settings.php
@@ -27,6 +27,4 @@ defined('MOODLE_INTERNAL') || die;
if ($hassiteconfig) {
$ADMIN->add('development', new admin_externalpage('toolphpunit', get_string('pluginname', 'tool_phpunit'), "$CFG->wwwroot/$CFG->admin/tool/phpunit/index.php"));
- $ADMIN->add('development', new admin_externalpage('toolphpunitwebrunner', get_string('pluginname', 'tool_phpunit'), "$CFG->wwwroot/$CFG->admin/tool/phpunit/webrunner.php",
- 'moodle/site:config', true));
}
diff --git a/admin/tool/phpunit/upgrade.txt b/admin/tool/phpunit/upgrade.txt
new file mode 100644
index 00000000000..4580c988f50
--- /dev/null
+++ b/admin/tool/phpunit/upgrade.txt
@@ -0,0 +1,4 @@
+This files describes API changes in the tool_phpunit code.
+
+=== 3.9 ===
+* webrunner was removed
diff --git a/admin/tool/phpunit/webrunner.php b/admin/tool/phpunit/webrunner.php
deleted file mode 100644
index 47a2b42ecb6..00000000000
--- a/admin/tool/phpunit/webrunner.php
+++ /dev/null
@@ -1,192 +0,0 @@
-.
-
-/**
- * PHPUnit shell execution wrapper
- *
- * @package tool_phpunit
- * @copyright 2012 Petr Skoda {@link http://skodak.org}
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-define('NO_OUTPUT_BUFFERING', true);
-
-require(__DIR__ . '/../../../config.php');
-require_once($CFG->libdir.'/adminlib.php');
-
-$testpath = optional_param('testpath', '', PARAM_PATH);
-$testclass = optional_param('testclass', '', PARAM_ALPHANUMEXT);
-$execute = optional_param('execute', 0, PARAM_BOOL);
-
-navigation_node::override_active_url(new moodle_url('/admin/tool/phpunit/index.php'));
-admin_externalpage_setup('toolphpunitwebrunner');
-
-if (!$CFG->debugdeveloper) {
- print_error('notlocalisederrormessage', 'error', '', null, 'Not available on production sites, sorry.');
-}
-
-core_php_time_limit::raise(60*30);
-
-$oldcwd = getcwd();
-$code = 0;
-
-if (!isset($CFG->phpunit_dataroot) or !isset($CFG->phpunit_prefix)) {
- tool_phpunit_problem('Missing $CFG->phpunit_dataroot or $CFG->phpunit_prefix, can not execute tests.');
-}
-if (!file_exists($CFG->phpunit_dataroot)) {
- mkdir($CFG->phpunit_dataroot, 02777, true);
-}
-if (!is_writable($CFG->phpunit_dataroot)) {
- tool_phpunit_problem('$CFG->phpunit_dataroot in not writable, can not execute tests.');
-}
-$output = null;
-exec('php --version', $output, $code);
-if ($code != 0) {
- tool_phpunit_problem('Can not execute \'php\' binary.');
-}
-
-if ($execute) {
- require_sesskey();
-
- chdir($CFG->dirroot);
- $output = null;
- exec("php $CFG->admin/tool/phpunit/cli/util.php --diag", $output, $code);
- if ($code == 0) {
- // everything is ready
-
- } else if ($code == PHPUNIT_EXITCODE_INSTALL) {
- tool_phpunit_header();
- echo $OUTPUT->box_start('generalbox');
- echo '';
- echo "Initialising test database:\n\n";
- chdir($CFG->dirroot);
- ignore_user_abort(true);
- passthru("php $CFG->admin/tool/phpunit/cli/util.php --buildconfig", $code);
- passthru("php $CFG->admin/tool/phpunit/cli/util.php --install", $code);
- chdir($oldcwd);
- echo ' ';
- echo $OUTPUT->box_end();
- if ($code != 0) {
- tool_phpunit_problem('Can not initialize database');
- }
- set_debugging(DEBUG_NONE, false); // Hack: no redirect warning, we really want to redirect.
- redirect(new moodle_url($PAGE->url, array('execute'=>1, 'tespath'=>$testpath, 'testclass'=>$testclass, 'sesskey'=>sesskey())), 'Reloading page');
- echo $OUTPUT->footer();
- die();
-
- } else if ($code == PHPUNIT_EXITCODE_REINSTALL) {
- tool_phpunit_header();
- echo $OUTPUT->box_start('generalbox');
- echo '';
- echo "Reinitialising test database:\n\n";
- chdir($CFG->dirroot);
- ignore_user_abort(true);
- passthru("php $CFG->admin/tool/phpunit/cli/util.php --drop", $code);
- passthru("php $CFG->admin/tool/phpunit/cli/util.php --buildconfig", $code);
- passthru("php $CFG->admin/tool/phpunit/cli/util.php --install", $code);
- chdir($oldcwd);
- echo ' ';
- echo $OUTPUT->box_end();
- if ($code != 0) {
- tool_phpunit_problem('Can not initialize database');
- }
- set_debugging(DEBUG_NONE, false); // Hack: no redirect warning, we really want to redirect.
- redirect(new moodle_url($PAGE->url, array('execute'=>1, 'tespath'=>$testpath, 'testclass'=>$testclass, 'sesskey'=>sesskey())), 'Reloading page');
- die();
-
- } else {
- tool_phpunit_header();
- echo $OUTPUT->box_start('generalbox');
- echo '';
- echo "Error: $code\n\n";
- echo implode("\n", $output);
- echo ' ';
- echo $OUTPUT->box_end();
- tool_phpunit_problem('Can not execute tests');
- die();
- }
-
- tool_phpunit_header();
- echo $OUTPUT->box_start('generalbox');
- echo '';
-
- // use the dataroot file
- $configdir = "$CFG->phpunit_dataroot/phpunit/webrunner.xml";
- if (!file_exists($configdir)) {
- passthru("php $CFG->admin/tool/phpunit/cli/util.php --buildconfig", $code);
- if ($code != 0) {
- tool_phpunit_problem('Can not create configuration file');
- }
- }
- $configdir = escapeshellarg($configdir);
- // no cleanup of path - this is tricky because we can not use escapeshellarg and friends for escaping,
- // this is from admin user so PARAM_PATH must be enough
- chdir($CFG->dirroot);
- passthru("php $CFG->admin/tool/phpunit/cli/util.php --run -c $configdir $testclass $testpath", $code);
- chdir($oldcwd);
-
- echo ' ';
- echo $OUTPUT->box_end();
-
-} else {
- tool_phpunit_header();
-}
-
-echo $OUTPUT->box_start('generalbox boxwidthwide boxaligncenter');
-echo '
';
-echo 'Class name ';
-echo ' (first class in file if empty)';
-echo '';
-echo ' ';
-echo ' ';
-echo ' ';
-echo '';
-echo '';
-echo $OUTPUT->box_end();
-echo $OUTPUT->footer();
-die;
-
-
-
-//========================================
-
-/**
- * Print headers and experimental warning
- * @return void
- */
-function tool_phpunit_header() {
- global $OUTPUT;
- echo $OUTPUT->header();
- echo $OUTPUT->heading(get_string('pluginname', 'tool_phpunit'));
- echo $OUTPUT->box('EXPERIMENTAL: it is recommended to execute PHPUnit tests and init scripts only from command line.', array('generalbox'));
-}
-
-/**
- * Called when PHPUnit can not execute.
- * @param string $message
- * @return void
- */
-function tool_phpunit_problem($message) {
- global $PAGE;
- if (!$PAGE->headerprinted) {
- tool_phpunit_header();
- }
- notice($message, new moodle_url('/admin/tool/phpunit/'));
-}
diff --git a/lib/phpunit/classes/util.php b/lib/phpunit/classes/util.php
index 2605f6fde15..844cc74ba94 100644
--- a/lib/phpunit/classes/util.php
+++ b/lib/phpunit/classes/util.php
@@ -63,7 +63,7 @@ class phpunit_util extends testing_util {
/**
* @var array Files to skip when dropping dataroot folder
*/
- protected static $datarootskipondrop = array('.', '..', 'lock', 'webrunner.xml');
+ protected static $datarootskipondrop = array('.', '..', 'lock');
/**
* Load global $CFG;
@@ -482,7 +482,7 @@ class phpunit_util extends testing_util {
}
/**
- * Builds dirroot/phpunit.xml and dataroot/phpunit/webrunner.xml files using defaults from /phpunit.xml.dist
+ * Builds dirroot/phpunit.xml file using defaults from /phpunit.xml.dist
* @static
* @return bool true means main config file created, false means only dataroot file created
*/
@@ -570,14 +570,6 @@ class phpunit_util extends testing_util {
}
}
- // relink - it seems that xml:base does not work in phpunit xml files, remove this nasty hack if you find a way to set xml base for relative refs
- $data = str_replace('lib/phpunit/', $CFG->dirroot.DIRECTORY_SEPARATOR.'lib'.DIRECTORY_SEPARATOR.'phpunit'.DIRECTORY_SEPARATOR, $data);
- $data = preg_replace('|([^<]+) |',
- ''.$CFG->dirroot.(DIRECTORY_SEPARATOR === '\\' ? '\\\\' : DIRECTORY_SEPARATOR).'$1 ',
- $data);
- file_put_contents("$CFG->dataroot/phpunit/webrunner.xml", $data);
- testing_fix_file_permissions("$CFG->dataroot/phpunit/webrunner.xml");
-
return (bool)$result;
}