assertDirectoryExists($appPath); $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($appPath, \FilesystemIterator::SKIP_DOTS) ); $forbiddenPatterns = ['/\bdd\(/', '/\bdump\(/', '/\bvar_dump\(/', '/\bprint_r\(/', '/\bray\(/']; $violations = []; /** @var \SplFileInfo $file */ foreach ($iterator as $file) { if ($file->getExtension() !== 'php') { continue; } $content = file_get_contents($file->getRealPath()); foreach ($forbiddenPatterns as $pattern) { if (preg_match($pattern, $content)) { $violations[] = $file->getRelativePathname() . " matches pattern {$pattern}"; } } } $this->assertEmpty( $violations, "Found forbidden debugging statements:\n" . implode("\n", $violations) ); } #[Test] public function controllers_must_have_controller_suffix(): void { $controllersPath = realpath(__DIR__ . '/../../app/Http/Controllers'); if (!$controllersPath || !is_dir($controllersPath)) { $this->markTestSkipped('Controllers directory does not exist.'); } $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($controllersPath, \FilesystemIterator::SKIP_DOTS) ); $invalidFiles = []; /** @var \SplFileInfo $file */ foreach ($iterator as $file) { if ($file->getExtension() !== 'php') { continue; } $filename = $file->getBasename('.php'); if (!str_ends_with($filename, 'Controller')) { $invalidFiles[] = $file->getRelativePathname(); } } $this->assertEmpty( $invalidFiles, "Controllers must end with 'Controller':\n" . implode("\n", $invalidFiles) ); } }