6 use PHPUnit\Runner\Filter\Factory as FilterFactory;
7 use PHPUnit\Runner\Filter\ExcludeGroupFilterIterator as GroupExcludeFilter;
36 $ilias_ini_path = __DIR__ .
"/../../../ilias.ini.php";
38 if (!is_file($ilias_ini_path)) {
41 require_once
'./Services/Init/classes/class.ilIniFile.php';
42 $ilias_ini =
new ilIniFile($ilias_ini_path);
44 $client_data_path = $ilias_ini->readVariable(
"server",
"absolute_path") .
"/" . $ilias_ini->readVariable(
"clients",
"path");
46 if (!is_dir($client_data_path)) {
50 include_once($ilias_ini->readVariable(
"server",
"absolute_path") .
"/Services/PHPUnit/config/cfg.phpunit.php");
52 if (!isset(
$_GET[
"client_id"])) {
56 $phpunit_client =
$_GET[
"client_id"];
58 if (!$phpunit_client) {
62 if (!is_file($client_data_path .
"/" . $phpunit_client .
"/client.ini.php")) {
72 echo
"ILIAS PHPUnit-Tests need installed dev-requirements, please install using 'composer install' in ./libs/composer \n";
76 $basedirs = array(
"Services",
"Modules");
78 foreach ($basedirs as $basedir) {
80 $dir = opendir($basedir);
82 while ($file = readdir($dir)) {
83 if ($file !=
"." && $file !=
".." && is_dir($basedir .
"/" . $file)) {
85 $basedir .
"/" . $file .
"/test/il" . $basedir . $file .
"Suite.php";
86 if (is_file($suite_path)) {
87 include_once($suite_path);
89 $name =
"il" . $basedir . $file .
"Suite";
91 echo
"Adding Suite: " .
$name .
"\n";
103 if (!
$suite->hasInstalledILIAS()) {
104 echo
"Removing tests requiring an installed ILIAS.\n";
105 $ff =
new FilterFactory();
108 array(self::PHPUNIT_GROUP_FOR_TESTS_REQUIRING_INSTALLED_ILIAS)
110 $suite->injectFilter($ff);
112 echo
"Found installed ILIAS, running all tests.\n";
125 $test_directories = array(
"tests");
126 while ($aux_dir = current($test_directories)) {
127 if ($handle = opendir($aux_dir)) {
128 $aux_dir .= DIRECTORY_SEPARATOR;
129 while (
false !== ($entry = readdir($handle))) {
130 if ($entry ===
'.' || $entry ===
'..') {
133 if (is_dir($aux_dir . $entry)) {
134 $test_directories[] = $aux_dir . $entry;
136 if (1 === preg_match(self::REGEX_TEST_FILENAME, $entry)) {
137 $ref_declared_classes = get_declared_classes();
138 require_once $aux_dir .
"/" . $entry;
139 $new_declared_classes = array_diff(get_declared_classes(), $ref_declared_classes);
140 foreach ($new_declared_classes as $entry_class) {
142 if (!$reflection->isAbstract() && $reflection->isSubclassOf(self::PHP_UNIT_PARENT_CLASS)) {
143 echo
"Adding Test-Suite: " . $entry_class .
"\n";
144 $suite->addTestSuite($entry_class);
151 next($test_directories);
const PHPUNIT_GROUP_FOR_TESTS_REQUIRING_INSTALLED_ILIAS
const PHP_UNIT_PARENT_CLASS
hasInstalledILIAS()
Check if there is an installed ILIAS to run tests on.
This is the global ILIAS test suite.
const REGEX_TEST_FILENAME
static addTestFolderToSuite(ilGlobalSuite $suite)
Find and add all testSuits beneath ILIAS_ROOL/tests - folder.