Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

48 changes: 37 additions & 11 deletions scripts/no-php-file-in-fixtures.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,36 +30,41 @@ public function __construct()
}

/**
* @param string[] $ruleTestDirectories
* @param string[] $testDirectories
* @return Command::SUCCESS|Command::FAILURE
*/
public function run(array $testDirectories): int
public function run(array $ruleTestDirectories, array $testDirectories): int
{
$phpFiles = $this->findPhpFiles($testDirectories);
$allFixtureFiles = $this->findFixtureFiles($ruleTestDirectories);

$allFixtureFiles = $this->findFixtureFiles($testDirectories);
$invalidFiles = [
...$this->findPhpFiles($ruleTestDirectories),
// ".inc" alone is never picked up, only "*.php.inc" is
...$this->findIncompleteIncFiles([...$ruleTestDirectories, ...$testDirectories]),
];

$relativePhpFiles = [];
foreach ($phpFiles as $phpFile) {
$relativeFilePath = substr($phpFile->getRealPath(), strlen(getcwd()) + 1);
$relativeInvalidFilePaths = [];
foreach ($invalidFiles as $invalidFile) {
$relativeFilePath = substr($invalidFile->getRealPath(), strlen(getcwd()) + 1);

// should skip?
if (in_array($relativeFilePath, self::EXCLUDED_FILES, true)) {
continue;
}

$relativePhpFiles[] = $relativeFilePath;
$relativeInvalidFilePaths[] = $relativeFilePath;
}

if ($relativePhpFiles === []) {
if ($relativeInvalidFilePaths === []) {
$this->symfonyStyle->success(sprintf('All %d fixtures are valid', count($allFixtureFiles)));
return Command::SUCCESS;
}

$this->symfonyStyle->error(
'The following "*.php* files were found in /Fixtures directory, but only "*.php.inc" files are picked up and allowed. Rename their suffix or remove them'
'The following files were found in /Fixtures directory, but only "*.php.inc" files are picked up and allowed. Rename their suffix or remove them'
);
$this->symfonyStyle->listing($relativePhpFiles);
$this->symfonyStyle->listing($relativeInvalidFilePaths);

return Command::FAILURE;
}
Expand All @@ -84,6 +89,27 @@ private function findPhpFiles(array $directories): array
return iterator_to_array($finder->getIterator());
}

/**
* @param string[] $directories
* @return SplFileInfo[]
*/
private function findIncompleteIncFiles(array $directories): array
{
Assert::allDirectory($directories);

$finder = new Finder()
->files()
->in($directories)
->path('/Fixture')
->path('/Fixture*')
->notPath('Source')
->name('*.inc')
->notName('*.php.inc')
->sortByName();

return iterator_to_array($finder->getIterator());
}

/**
* @param string[] $directories
* @return SplFileInfo[]
Expand All @@ -106,4 +132,4 @@ private function findFixtureFiles(array $directories): array

$noPhpFileInFixturesDetector = new NoPhpFileInFixturesDetector();

exit($noPhpFileInFixturesDetector->run([__DIR__ . '/../rules-tests']));
exit($noPhpFileInFixturesDetector->run([__DIR__ . '/../rules-tests'], [__DIR__ . '/../tests']));
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class WithDescription extends TestCase
use PHPUnit\Framework\TestCase;

/**
* @copyright Some Value. {@link https://example.com}.
* @copyright Some Value. Something.({@link https://example.com}).
*/
#[\PHPUnit\Framework\Attributes\CoversClass(\Tests\BarController::class)]
class WithDescription extends TestCase
Expand Down
Loading