From c171fc598e23497695789a337ce9e65c10f50168 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 26 Apr 2024 12:26:45 +0200 Subject: [PATCH 1/4] Compare class-names case insensitive --- src/Filtering/PossiblyUnusedClassesFilter.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Filtering/PossiblyUnusedClassesFilter.php b/src/Filtering/PossiblyUnusedClassesFilter.php index 350127d..c7b5439 100644 --- a/src/Filtering/PossiblyUnusedClassesFilter.php +++ b/src/Filtering/PossiblyUnusedClassesFilter.php @@ -82,19 +82,24 @@ public function filter( $typesToSkip = [...$typesToSkip, ...self::DEFAULT_TYPES_TO_SKIP]; $attributesToSkip = [...$attributesToSkip, ...self::DEFAULT_ATTRIBUTES_TO_SKIP]; + $usedClassNames = array_map('strtolower', $usedClassNames); + $suffixesToSkip = array_map('strtolower', $suffixesToSkip); + foreach ($filesWithClasses as $fileWithClass) { - if (in_array($fileWithClass->getClassName(), $usedClassNames, true)) { + $lowerClassName = strtolower($fileWithClass->getClassName()); + + if (in_array($lowerClassName, $usedClassNames, true)) { continue; } // is excluded interfaces? - if ($this->shouldSkip($fileWithClass->getClassName(), $typesToSkip)) { + if ($this->shouldSkip($lowerClassName, $typesToSkip)) { continue; } // is excluded suffix? foreach ($suffixesToSkip as $suffixToSkip) { - if (str_ends_with($fileWithClass->getClassName(), $suffixToSkip)) { + if (str_ends_with($lowerClassName, $suffixToSkip)) { continue 2; } } From e5edb6856806754611f6c5ff54fa0ed156e61993 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 26 Apr 2024 12:50:24 +0200 Subject: [PATCH 2/4] added tests --- src/Filtering/PossiblyUnusedClassesFilter.php | 2 +- tests/PossiblyUnusedClassesFilterTest.php | 62 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 tests/PossiblyUnusedClassesFilterTest.php diff --git a/src/Filtering/PossiblyUnusedClassesFilter.php b/src/Filtering/PossiblyUnusedClassesFilter.php index c7b5439..55d2170 100644 --- a/src/Filtering/PossiblyUnusedClassesFilter.php +++ b/src/Filtering/PossiblyUnusedClassesFilter.php @@ -93,7 +93,7 @@ public function filter( } // is excluded interfaces? - if ($this->shouldSkip($lowerClassName, $typesToSkip)) { + if ($this->shouldSkip($fileWithClass->getClassName(), $typesToSkip)) { continue; } diff --git a/tests/PossiblyUnusedClassesFilterTest.php b/tests/PossiblyUnusedClassesFilterTest.php new file mode 100644 index 0000000..64da0ec --- /dev/null +++ b/tests/PossiblyUnusedClassesFilterTest.php @@ -0,0 +1,62 @@ +assertSame($expectedResult, $filter->filter( + $filesWithClasses, + $usedClassNames, + $typesToSkip, + $suffixesToSkip, + $attributesToSkip + )); + } + + public static function provideData(): \Iterator + { + yield [ // test case-insensitive class name + [], + [new FileWithClass('foo.php', 'Bar', false, [])], + ['BAR'], + [], + [], + [] + ]; + + yield [ // test case-insensitive skip suffixes + [], + [new FileWithClass('foo.php', 'Bar', false, [])], + [], + [], + ['AR'], + [] + ]; + + } +} From 3d766faf5488a0e61e58a4fc50414e7df5dba58f Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 26 Apr 2024 12:51:02 +0200 Subject: [PATCH 3/4] run rector --- tests/PossiblyUnusedClassesFilterTest.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/PossiblyUnusedClassesFilterTest.php b/tests/PossiblyUnusedClassesFilterTest.php index 64da0ec..eb3ad32 100644 --- a/tests/PossiblyUnusedClassesFilterTest.php +++ b/tests/PossiblyUnusedClassesFilterTest.php @@ -4,7 +4,7 @@ namespace TomasVotruba\ClassLeak\Tests; -use PHPUnit\Framework\Attributes\DataProvider; +use Iterator; use TomasVotruba\ClassLeak\Filtering\PossiblyUnusedClassesFilter; use TomasVotruba\ClassLeak\ValueObject\FileWithClass; @@ -26,10 +26,10 @@ public function testFilter( array $typesToSkip, array $suffixesToSkip, array $attributesToSkip - ) + ): void { - $filter = new PossiblyUnusedClassesFilter(); - $this->assertSame($expectedResult, $filter->filter( + $possiblyUnusedClassesFilter = new PossiblyUnusedClassesFilter(); + $this->assertSame($expectedResult, $possiblyUnusedClassesFilter->filter( $filesWithClasses, $usedClassNames, $typesToSkip, @@ -38,7 +38,7 @@ public function testFilter( )); } - public static function provideData(): \Iterator + public static function provideData(): Iterator { yield [ // test case-insensitive class name [], From d687bb0bde6d56e39520f59e96353afe2923a4be Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 26 Apr 2024 13:00:09 +0200 Subject: [PATCH 4/4] Update PossiblyUnusedClassesFilterTest.php --- tests/{ => Filtering}/PossiblyUnusedClassesFilterTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename tests/{ => Filtering}/PossiblyUnusedClassesFilterTest.php (93%) diff --git a/tests/PossiblyUnusedClassesFilterTest.php b/tests/Filtering/PossiblyUnusedClassesFilterTest.php similarity index 93% rename from tests/PossiblyUnusedClassesFilterTest.php rename to tests/Filtering/PossiblyUnusedClassesFilterTest.php index eb3ad32..718bad4 100644 --- a/tests/PossiblyUnusedClassesFilterTest.php +++ b/tests/Filtering/PossiblyUnusedClassesFilterTest.php @@ -2,10 +2,11 @@ declare(strict_types=1); -namespace TomasVotruba\ClassLeak\Tests; +namespace TomasVotruba\ClassLeak\Tests\Filtering; use Iterator; use TomasVotruba\ClassLeak\Filtering\PossiblyUnusedClassesFilter; +use TomasVotruba\ClassLeak\Tests\AbstractTestCase; use TomasVotruba\ClassLeak\ValueObject\FileWithClass; final class PossiblyUnusedClassesFilterTest extends AbstractTestCase