ILIAS  release_8 Revision v8.24
ilModulesTestSuite.php
Go to the documentation of this file.
1<?php
2
19use PHPUnit\Framework\TestSuite;
20use PHPUnit\Framework\TestCase;
21
22require_once __DIR__ . "/ilTestBaseTestCase.php";
23
24class ilModulesTestSuite extends TestSuite
25{
26 public static function suite(): ilModulesTestSuite
27 {
28 if (!defined("ILIAS_HTTP_PATH")) {
29 define("ILIAS_HTTP_PATH", "http://localhost");
30 }
31
32 if (!defined("DEBUG")) {
33 define("DEBUG", false);
34 }
35
36 if (!defined("ILIAS_LOG_ENABLED")) {
37 define("ILIAS_LOG_ENABLED", false);
38 }
39
40 if (!defined("ROOT_FOLDER_ID")) {
41 define("ROOT_FOLDER_ID", 1);
42 }
43
44 if (!defined("IL_INST_ID")) {
45 define("IL_INST_ID", 0);
46 }
47 if (!defined("CLIENT_DATA_DIR")) {
48 define("CLIENT_DATA_DIR", "/tmp");
49 }
50
51 if (!defined("CLIENT_ID")) {
52 define("CLIENT_ID", 1);
53 }
54
55 if (!defined('ANONYMOUS_USER_ID')) {
56 define('ANONYMOUS_USER_ID', 13);
57 }
58
59 chdir(dirname(__FILE__));
60 chdir('../../../');
61
62
63 $suite = new ilModulesTestSuite();
64
65 foreach (new RegExIterator(
66 new RecursiveIteratorIterator(
67 new RecursiveDirectoryIterator(__DIR__, FilesystemIterator::SKIP_DOTS),
68 RecursiveIteratorIterator::LEAVES_ONLY
69 ),
70 '/BaseTest\.php$/'
71 ) as $file) {
73 require_once $file->getPathname();
74 }
75
76 foreach (new RegExIterator(
77 new RecursiveIteratorIterator(
78 new RecursiveDirectoryIterator(__DIR__, FilesystemIterator::SKIP_DOTS),
79 RecursiveIteratorIterator::LEAVES_ONLY
80 ),
81 '/(?<!Base)Test\.php$/'
82 ) as $file) {
84 require_once $file->getPathname();
85
86 $className = preg_replace('/(.*?)(\.php)/', '$1', $file->getBasename());
87 if (!self::addClass($suite, $className)) {
88 $results = [];
89 if (preg_match('/^namespace ([[:alnum:]_\\\\]+);$/m', file_get_contents($file->getPathname()), $results)) {
90 self::addClass($suite, $results[1] . '\\' . $className);
91 }
92 }
93 }
94
95 return $suite;
96 }
97
98 private static function addClass(self $suite, string $className): bool
99 {
100 if (!class_exists($className)) {
101 return false;
102 }
103 $reflection = new ReflectionClass($className);
104 if (
105 !$reflection->isAbstract() &&
106 !$reflection->isInterface() &&
107 $reflection->isSubclassOf(TestCase::class)) {
108 $suite->addTestSuite($className);
109 }
110
111 return true;
112 }
113}
static addClass(self $suite, string $className)
$results