summaryrefslogtreecommitdiff
path: root/test/remotetests.php
diff options
context:
space:
mode:
Diffstat (limited to 'test/remotetests.php')
-rwxr-xr-xtest/remotetests.php155
1 files changed, 155 insertions, 0 deletions
diff --git a/test/remotetests.php b/test/remotetests.php
new file mode 100755
index 000000000..f4d1af869
--- /dev/null
+++ b/test/remotetests.php
@@ -0,0 +1,155 @@
+#!/usr/bin/php -q
+<?php
+/**
+* TODO: This needs migrating to inc/cli_opts.php
+*/
+ini_set('memory_limit','128M');
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
+
+require_once 'lib/testmanager.php';
+TestManager::setup();
+
+function usage() {
+ $usage = <<<EOD
+Usage: ./runtests.php [OPTION]...
+Run the Dokuwiki unit tests remotely executing tests over HTTP and delivering
+results to the command line. If ALL of the test cases pass a count of
+total passes is printed on STDOUT. If ANY of the test cases fail (or raise
+errors) details are printed on STDERR and this script returns a non-zero
+exit code.
+ -u --url=HTTP_PATH specify remote server test url (w. index.php)
+ -f --file=NAME specify a test case file
+ -g --group=NAME specify a grouptest. If no grouptest is
+ specified, all test cases will be run.
+ -l --glist list available group tests
+ -c --clist list available test case files
+ -s, --separator=SEP set the character(s) used to separate fail
+ details to SEP
+ -p, --path path to SimpleTest installation
+ -h, --help display this help and exit
+
+EOD;
+ echo $usage;
+ exit(0);
+}
+
+/* default test options */
+$opt_url = FALSE;
+$opt_separator = '->';
+$opt_group_list = FALSE;
+$opt_case_list = FALSE;
+$opt_casefile = FALSE;
+$opt_groupfile = FALSE;
+
+/* only allow cmd line options if PEAR Console_Getopt is available */
+@include_once 'Console/Getopt.php'; /* PEAR lib */
+if (class_exists('Console_Getopt')) {
+
+ $argv = Console_Getopt::readPHPArgv();
+ if (PEAR::isError($argv)) {
+ die('Fatal Error: ' . $argv->getMessage()) . "\n";
+ }
+
+ $short_opts = "u:f:g:hlcs:p:";
+ $long_opts = array(
+ "help", "url=", "file=", "group=",
+ "glist", "clist", "separator=", "path="
+ );
+ $options = Console_Getopt::getopt($argv, $short_opts, $long_opts);
+ if (PEAR::isError($options)) {
+ usage($available_grouptests);
+ }
+
+ foreach ($options[0] as $option) {
+ switch ($option[0]) {
+ case 'h':
+ case '--help':
+ usage();
+ break;
+ case 'u':
+ case '--url':
+ $opt_url = $option[1];
+ break;
+ case 'f':
+ case '--file':
+ $opt_casefile = $option[1];
+ break;
+ case 'g':
+ case '--group':
+ $opt_groupfile = $option[1];
+ break;
+ case 'l':
+ case '--glist':
+ $opt_group_list = TRUE;
+ break;
+ case 'c':
+ case '--clist':
+ $opt_case_list = TRUE;
+ break;
+ case 's':
+ case '--separator':
+ $opt_separator = $option[1];
+ break;
+ case 'p':
+ case '--path':
+ if (file_exists($option[1])) {
+ define('SIMPLE_TEST', $option[1]);
+ }
+ break;
+ }
+ }
+}
+
+
+if ( !defined('SIMPLE_TEST') ) {
+ define('SIMPLE_TEST', ConfigManager::getOptionAsPath('tests', 'simpletest', 'library_path'));
+}
+if (!@include_once SIMPLE_TEST . 'runner.php') {
+ RaiseError('runtime', 'LIBRARY_REQUIRED', array(
+ 'library' => 'Simple Test',
+ 'path' => SIMPLE_TEST));
+}
+require_once 'lib/cli_reporter.php';
+
+/* list tests */
+if ($opt_group_list || $opt_case_list ) {
+
+ if ($opt_group_list) {
+ $gList = RemoteTestManager::getGroupTestList($opt_url);
+
+ foreach ( $gList as $gName => $gUrl ) {
+ fwrite(STDOUT,"[$gName] $gUrl\n");
+ }
+ }
+
+ if ($opt_case_list) {
+ $cList = RemoteTestManager::getTestCaseList($opt_url);
+
+ foreach ( $cList as $cName => $cUrl ) {
+ fwrite(STDOUT,"[$cName] $cUrl\n");
+ }
+ }
+
+ exit(0);
+}
+
+/* run a test case */
+if ($opt_casefile) {
+ RemoteTestManager::runTestCase(
+ $opt_casefile, new CLIReporter($opt_separator), $opt_url
+ );
+ exit(0);
+}
+
+/* run a grouptest */
+if ($opt_groupfile) {
+ RemoteTestManager::runGroupTest(
+ $opt_groupfile, new CLIReporter($opt_separator), $opt_url
+ );
+ exit(0);
+}
+/* run all tests */
+RemoteTestManager::runAllTests(new CLIReporter($opt_separator), $opt_url);
+exit(0);
+?> \ No newline at end of file