From 64276db8b652ab91bb62ff7957d096a79069f3a2 Mon Sep 17 00:00:00 2001 From: Sebastian Feldmann Date: Fri, 7 Sep 2018 17:12:34 +0200 Subject: [PATCH] Make --filter case insensitive - issue #3181 --- ChangeLog-6.5.md | 1 + src/Runner/Filter/NameFilterIterator.php | 2 +- .../Runner/Filter/NameFilterIteratorTest.php | 41 +++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/unit/Runner/Filter/NameFilterIteratorTest.php diff --git a/ChangeLog-6.5.md b/ChangeLog-6.5.md index 791c16b7a40..7cd127c9d95 100644 --- a/ChangeLog-6.5.md +++ b/ChangeLog-6.5.md @@ -5,6 +5,7 @@ All notable changes of the PHPUnit 6.5 release series are documented in this fil ## [6.5.13] - 2018-MM-DD * Fixed [#3254](https://github.com/sebastianbergmann/phpunit/issues/3254): TextUI test runner cannot run a `Test` instance that is not a `TestSuite` +* Fixed [#3181](https://github.com/sebastianbergmann/phpunit/issues/3181): Make --filter case insensitive ## [6.5.12] - 2018-08-22 diff --git a/src/Runner/Filter/NameFilterIterator.php b/src/Runner/Filter/NameFilterIterator.php index af0a37c0533..46e71875366 100644 --- a/src/Runner/Filter/NameFilterIterator.php +++ b/src/Runner/Filter/NameFilterIterator.php @@ -79,7 +79,7 @@ protected function setFilter($filter) // Escape delimiters in regular expression. Do NOT use preg_quote, // to keep magic characters. - $filter = \sprintf('/%s/', \str_replace( + $filter = \sprintf('/%s/i', \str_replace( '/', '\\/', $filter diff --git a/tests/unit/Runner/Filter/NameFilterIteratorTest.php b/tests/unit/Runner/Filter/NameFilterIteratorTest.php new file mode 100644 index 00000000000..21d88f537cf --- /dev/null +++ b/tests/unit/Runner/Filter/NameFilterIteratorTest.php @@ -0,0 +1,41 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace PHPUnit\Runner\Filter; + +use PHPUnit\Framework\TestCase; + +class NameFilterIteratorTest extends TestCase +{ + public function testCaseSensitiveMatch() + { + $iterator = $this->getTestSuiteItteratorMock(); + $filter = new NameFilterIterator($iterator, 'Success'); + $this->assertTrue((bool) $filter->accept()); + } + + public function testCaseInsensitiveMatch() + { + $iterator = $this->getTestSuiteItteratorMock(); + $filter = new NameFilterIterator($iterator, 'success'); + $this->assertTrue((bool) $filter->accept()); + } + + /** + * @return \PHPUnit\Framework\TestSuiteIterator + */ + private function getTestSuiteItteratorMock() + { + $success = new \Success(); + $iterator = $this->createMock(\PHPUnit\Framework\TestSuiteIterator::class); + $iterator->expects($this->once())->method('current')->willReturn($success); + + return $iterator; + } +}