From eea8cb6a0775078fea5263db2dd41c03108da2ae 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 --- src/Runner/Filter/NameFilterIterator.php | 2 +- .../Runner/Filter/NameFilterIteratorTest.php | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/unit/Runner/Filter/NameFilterIteratorTest.php 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..ef6e49329ec --- /dev/null +++ b/tests/unit/Runner/Filter/NameFilterIteratorTest.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace unit\Runner\Filter; + +use PHPUnit\Framework\TestCase; +use PHPUnit\Runner\Filter\NameFilterIterator; + +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; + } +}