*/ private const STRUCTURE = [ 'Datasets', 'Datasets.php', 'Expectations', 'Expectations.php', 'Helpers', 'Helpers.php', 'Pest.php', ]; /** * Boots the Subscribers. */ public function __invoke(): void { $rootPath = TestSuite::getInstance()->rootPath; $testsPath = $rootPath.DIRECTORY_SEPARATOR.testDirectory(); foreach (self::STRUCTURE as $filename) { $filename = sprintf('%s%s%s', $testsPath, DIRECTORY_SEPARATOR, $filename); if (! file_exists($filename)) { continue; } if (is_dir($filename)) { $directory = new RecursiveDirectoryIterator($filename); $iterator = new RecursiveIteratorIterator($directory); /** @var \DirectoryIterator $file */ foreach ($iterator as $file) { $this->load($file->__toString()); } } else { $this->load($filename); } } } /** * Loads the given filename, if possible. */ private function load(string $filename): void { if (Str::endsWith($filename, '.php') && file_exists($filename)) { include_once $filename; } } }