From f168e7bc6d06463d0ab5b8c41655587da44541e9 Mon Sep 17 00:00:00 2001 From: Jordi Domenech Date: Mon, 19 Jun 2023 09:00:34 +0200 Subject: [PATCH] Use of wildcard to check if a class ends with should not match classes that contain end --- src/Analyzer/PatternString.php | 2 +- tests/Unit/Analyzer/PatternStringTest.php | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Analyzer/PatternString.php b/src/Analyzer/PatternString.php index 50c97481..008f1411 100644 --- a/src/Analyzer/PatternString.php +++ b/src/Analyzer/PatternString.php @@ -46,7 +46,7 @@ private function containsWildcard(string $pattern): bool private function startsWithPattern(string $pattern): bool { - return 1 === preg_match('#^'.$this->convertShellToRegExPattern($pattern).'#', $this->value); + return 1 === preg_match('#^'.$this->convertShellToRegExPattern($pattern).'$#', $this->value); } private function convertShellToRegExPattern(string $pattern): string diff --git a/tests/Unit/Analyzer/PatternStringTest.php b/tests/Unit/Analyzer/PatternStringTest.php index e26221d2..f1522ea9 100644 --- a/tests/Unit/Analyzer/PatternStringTest.php +++ b/tests/Unit/Analyzer/PatternStringTest.php @@ -21,4 +21,11 @@ public function test_wildcard_is_for_alphanumeric(): void $this->assertTrue($pattern->matches('*This*')); $this->assertFalse($pattern->matches('This*')); } + + public function test_ends_with(): void + { + $pattern = new PatternString('SoThisIsAnExample'); + $this->assertTrue($pattern->matches('*Example')); + $this->assertFalse($pattern->matches('*This')); + } }