map(fn (string $relative): string => $root.'/'.$relative) ->filter(fn (string $absolute): bool => is_file($absolute)) ->values(); $patterns = [ '/->app_client_id\b/', '/->app_client_secret\b/', ]; $hits = []; /** @var Collection $files */ foreach ($files as $path) { if ($self && realpath($path) === $self) { continue; } $contents = file_get_contents($path); if (! is_string($contents) || $contents === '') { continue; } $relative = str_replace($root.'/', '', $path); $lines = preg_split('/\R/', $contents) ?: []; foreach ($patterns as $pattern) { foreach ($lines as $index => $line) { if (preg_match($pattern, $line) === 1) { $hits[] = $relative.':'.($index + 1).' -> '.trim($line); } } } } expect($hits)->toBeEmpty("Legacy tenant provider fallback detected:\n".implode("\n", $hits)); });