ILIAS  release_8 Revision v8.23
ilModulesTestSuite.php
Go to the documentation of this file.
1 <?php
2 
21 
22 require_once __DIR__ . "/ilTestBaseTestCase.php";
23 
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(
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(
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