From d149815c39773ef15ef5acc207eb86f6219b22a4 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 6 Nov 2025 16:10:04 +0100 Subject: [PATCH 1/2] path --- phpstan.neon | 1 + 1 file changed, 1 insertion(+) diff --git a/phpstan.neon b/phpstan.neon index 594689ff43..dcc255a263 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -2,6 +2,7 @@ parameters: level: 8 paths: + - bin - src - tests From 8e3faf5a92332a231806af90144db6227de916a3 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 6 Nov 2025 16:12:28 +0100 Subject: [PATCH 2/2] honest test --- src/Analyzer/UnusedDefinitionsAnalyzer.php | 12 +++++ .../SomeContext.php | 10 ++-- .../{Features => EverythingUsed}/some.feature | 1 + .../Fixture/UnusedMasks}/BehatContext.php | 2 +- .../Fixture/UnusedMasks}/some.feature | 0 .../UnusedDefinitionsAnalyzerTest.php | 27 +++++++++-- tests/BehastanTest.php | 48 ------------------- 7 files changed, 43 insertions(+), 57 deletions(-) rename tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/{Contexts => EverythingUsed}/SomeContext.php (69%) rename tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/{Features => EverythingUsed}/some.feature (74%) rename tests/{Fixture => Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedMasks}/BehatContext.php (73%) rename tests/{Fixture => Analyzer/UnusedDefinitionsAnalyzer/Fixture/UnusedMasks}/some.feature (100%) delete mode 100644 tests/BehastanTest.php diff --git a/src/Analyzer/UnusedDefinitionsAnalyzer.php b/src/Analyzer/UnusedDefinitionsAnalyzer.php index dfceea2122..621f8117a6 100644 --- a/src/Analyzer/UnusedDefinitionsAnalyzer.php +++ b/src/Analyzer/UnusedDefinitionsAnalyzer.php @@ -15,6 +15,7 @@ use Rector\Behastan\ValueObject\Mask\SkippedMask; use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Finder\SplFileInfo; +use Webmozart\Assert\Assert; /** * @see \Rector\Behastan\Tests\Analyzer\UnusedDefinitionsAnalyzer\UnusedDefinitionsAnalyzerTest @@ -42,7 +43,18 @@ public function __construct( */ public function analyse(array $contextFiles, array $featureFiles): array { + Assert::allIsInstanceOf($contextFiles, SplFileInfo::class); + foreach ($contextFiles as $contextFile) { + Assert::endsWith($contextFile->getFilename(), '.php'); + } + + Assert::allIsInstanceOf($featureFiles, SplFileInfo::class); + foreach ($featureFiles as $featureFile) { + Assert::endsWith($featureFile->getFilename(), '.feature'); + } + $maskCollection = $this->definitionMasksResolver->resolve($contextFiles); + $this->maskCollectionStatsPrinter->printStats($maskCollection); $featureInstructions = $this->usedInstructionResolver->resolveInstructionsFromFeatureFiles($featureFiles); diff --git a/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/Contexts/SomeContext.php b/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/EverythingUsed/SomeContext.php similarity index 69% rename from tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/Contexts/SomeContext.php rename to tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/EverythingUsed/SomeContext.php index 1051bc83a1..b55c41c0c1 100644 --- a/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/Contexts/SomeContext.php +++ b/tests/Analyzer/UnusedDefinitionsAnalyzer/Fixture/EverythingUsed/SomeContext.php @@ -1,6 +1,6 @@ unusedDefinitionsAnalyzer = $this->make(UnusedDefinitionsAnalyzer::class); } - public function test(): void + public function testEverythingUsed(): void { - $featureFiles = BehatMetafilesFinder::findFeatureFiles([__DIR__ . '/Fixture/Features']); - $this->assertCount(1, $featureFiles); + $featureFiles = BehatMetafilesFinder::findFeatureFiles([__DIR__ . '/Fixture/EverythingUsed']); + $contextFiles = BehatMetafilesFinder::findContextFiles([__DIR__ . '/Fixture/EverythingUsed']); - $contextFiles = BehatMetafilesFinder::findContextFiles([__DIR__ . '/Fixture/Contexts']); + $this->assertCount(1, $featureFiles); $this->assertCount(1, $contextFiles); $unusedDefinitions = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles); $this->assertCount(0, $unusedDefinitions); } + + public function testFoundMask(): void + { + $featureFiles = BehatMetafilesFinder::findFeatureFiles([__DIR__ . '/Fixture/UnusedMasks']); + $contextFiles = BehatMetafilesFinder::findContextFiles([__DIR__ . '/Fixture/UnusedMasks']); + + $this->assertCount(1, $featureFiles); + $this->assertCount(1, $contextFiles); + + $unusedMasks = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles); + $this->assertCount(1, $unusedMasks); + $this->assertContainsOnlyInstancesOf(AbstractMask::class, $unusedMasks); + + /** @var AbstractMask $unusedMask */ + $unusedMask = $unusedMasks[0]; + $this->assertSame(__DIR__ . '/Fixture/UnusedMasks/BehatContext.php', $unusedMask->filePath); + $this->assertSame('never used', $unusedMask->mask); + } } diff --git a/tests/BehastanTest.php b/tests/BehastanTest.php deleted file mode 100644 index 5d00f71d76..0000000000 --- a/tests/BehastanTest.php +++ /dev/null @@ -1,48 +0,0 @@ -unusedDefinitionsAnalyzer = $this->make(UnusedDefinitionsAnalyzer::class); - $this->behatMetafilesFinder = $this->make(BehatMetafilesFinder::class); - - // silence output in tests - $symfonyStyle = $this->make(SymfonyStyle::class); - $symfonyStyle->setVerbosity(Output::VERBOSITY_QUIET); - } - - public function test(): void - { - $featureFiles = $this->behatMetafilesFinder->findFeatureFiles([__DIR__ . '/Fixture']); - $contextFiles = $this->behatMetafilesFinder->findContextFiles([__DIR__ . '/Fixture']); - - $this->assertCount(1, $featureFiles); - $this->assertCount(1, $contextFiles); - - $unusedMasks = $this->unusedDefinitionsAnalyzer->analyse($contextFiles, $featureFiles); - $this->assertCount(1, $unusedMasks); - $this->assertContainsOnlyInstancesOf(AbstractMask::class, $unusedMasks); - - /** @var AbstractMask $unusedMask */ - $unusedMask = $unusedMasks[0]; - $this->assertSame(__DIR__ . '/Fixture/BehatContext.php', $unusedMask->filePath); - $this->assertSame('never used', $unusedMask->mask); - } -}