From 77af4dc4d72badb478917062578c16204ff32f2c Mon Sep 17 00:00:00 2001 From: Chris Bandy Date: Tue, 26 Mar 2013 13:43:31 -0500 Subject: [PATCH 1/2] Test parentheses in @covers annotation Follow-up to 8ce4a4484846f3e0f39317f6320c0736d77ecb3f of #108 --- Tests/PHP/CodeCoverage/FilterTest.php | 4 ++ Tests/PHP/CodeCoverage/UtilTest.php | 4 ++ Tests/PHP/CodeCoverageTest.php | 71 +++++++++++++++++-- .../CoverageFunctionParenthesesTest.php | 11 +++ ...erageFunctionParenthesesWhitespaceTest.php | 11 +++ .../_files/CoverageMethodParenthesesTest.php | 12 ++++ ...overageMethodParenthesesWhitespaceTest.php | 12 ++++ 7 files changed, 118 insertions(+), 7 deletions(-) create mode 100644 Tests/_files/CoverageFunctionParenthesesTest.php create mode 100644 Tests/_files/CoverageFunctionParenthesesWhitespaceTest.php create mode 100644 Tests/_files/CoverageMethodParenthesesTest.php create mode 100644 Tests/_files/CoverageMethodParenthesesWhitespaceTest.php diff --git a/Tests/PHP/CodeCoverage/FilterTest.php b/Tests/PHP/CodeCoverage/FilterTest.php index f90e518f1..be8b71ee5 100644 --- a/Tests/PHP/CodeCoverage/FilterTest.php +++ b/Tests/PHP/CodeCoverage/FilterTest.php @@ -78,8 +78,12 @@ protected function setUp() TEST_FILES_PATH . 'BankAccountTest.php', TEST_FILES_PATH . 'CoverageClassExtendedTest.php', TEST_FILES_PATH . 'CoverageClassTest.php', + TEST_FILES_PATH . 'CoverageFunctionParenthesesTest.php', + TEST_FILES_PATH . 'CoverageFunctionParenthesesWhitespaceTest.php', TEST_FILES_PATH . 'CoverageFunctionTest.php', TEST_FILES_PATH . 'CoverageMethodOneLineAnnotationTest.php', + TEST_FILES_PATH . 'CoverageMethodParenthesesTest.php', + TEST_FILES_PATH . 'CoverageMethodParenthesesWhitespaceTest.php', TEST_FILES_PATH . 'CoverageMethodTest.php', TEST_FILES_PATH . 'CoverageNoneTest.php', TEST_FILES_PATH . 'CoverageNotPrivateTest.php', diff --git a/Tests/PHP/CodeCoverage/UtilTest.php b/Tests/PHP/CodeCoverage/UtilTest.php index ed6b0f7cb..de7402d30 100644 --- a/Tests/PHP/CodeCoverage/UtilTest.php +++ b/Tests/PHP/CodeCoverage/UtilTest.php @@ -55,8 +55,12 @@ require_once TEST_FILES_PATH . 'CoverageClassExtendedTest.php'; require_once TEST_FILES_PATH . 'CoverageClassTest.php'; require_once TEST_FILES_PATH . 'CoverageFunctionTest.php'; +require_once TEST_FILES_PATH . 'CoverageFunctionParenthesesTest.php'; +require_once TEST_FILES_PATH . 'CoverageFunctionParenthesesWhitespaceTest.php'; require_once TEST_FILES_PATH . 'CoverageMethodTest.php'; require_once TEST_FILES_PATH . 'CoverageMethodOneLineAnnotationTest.php'; +require_once TEST_FILES_PATH . 'CoverageMethodParenthesesTest.php'; +require_once TEST_FILES_PATH . 'CoverageMethodParenthesesWhitespaceTest.php'; require_once TEST_FILES_PATH . 'CoverageNoneTest.php'; require_once TEST_FILES_PATH . 'CoverageNotPrivateTest.php'; require_once TEST_FILES_PATH . 'CoverageNotProtectedTest.php'; diff --git a/Tests/PHP/CodeCoverageTest.php b/Tests/PHP/CodeCoverageTest.php index 582b0a836..228175166 100644 --- a/Tests/PHP/CodeCoverageTest.php +++ b/Tests/PHP/CodeCoverageTest.php @@ -234,13 +234,10 @@ public function testClear() } /** - * Add parenthesis to the covers annotation below in a couple of different ways to make sure it - * works as expected - * - * @covers PHP_CodeCoverage::start() - * @covers PHP_CodeCoverage::stop( ) - * @covers PHP_CodeCoverage::append () - * @covers PHP_CodeCoverage::applyListsFilter ( ) + * @covers PHP_CodeCoverage::start + * @covers PHP_CodeCoverage::stop + * @covers PHP_CodeCoverage::append + * @covers PHP_CodeCoverage::applyListsFilter * @covers PHP_CodeCoverage::initializeFilesThatAreSeenTheFirstTime * @covers PHP_CodeCoverage::applyCoversAnnotationFilter * @covers PHP_CodeCoverage::getTests @@ -399,6 +396,66 @@ public function testTwoCoversDefaultClassAnnoationsAreNotAllowed() ); } + /** + * @covers PHP_CodeCoverage::getLinesToBeCovered + */ + public function testFunctionParenthesesAreAllowed() + { + $this->assertSame( + array(TEST_FILES_PATH . 'CoveredFunction.php' => range(2, 4)), + $this->getLinesToBeCovered->invoke( + $this->coverage, + 'CoverageFunctionParenthesesTest', + 'testSomething' + ) + ); + } + + /** + * @covers PHP_CodeCoverage::getLinesToBeCovered + */ + public function testFunctionParenthesesAreAllowedWithWhitespace() + { + $this->assertSame( + array(TEST_FILES_PATH . 'CoveredFunction.php' => range(2, 4)), + $this->getLinesToBeCovered->invoke( + $this->coverage, + 'CoverageFunctionParenthesesWhitespaceTest', + 'testSomething' + ) + ); + } + + /** + * @covers PHP_CodeCoverage::getLinesToBeCovered + */ + public function testMethodParenthesesAreAllowed() + { + $this->assertSame( + array(TEST_FILES_PATH . 'CoveredClass.php' => range(31, 35)), + $this->getLinesToBeCovered->invoke( + $this->coverage, + 'CoverageMethodParenthesesTest', + 'testSomething' + ) + ); + } + + /** + * @covers PHP_CodeCoverage::getLinesToBeCovered + */ + public function testMethodParenthesesAreAllowedWithWhitespace() + { + $this->assertSame( + array(TEST_FILES_PATH . 'CoveredClass.php' => range(31, 35)), + $this->getLinesToBeCovered->invoke( + $this->coverage, + 'CoverageMethodParenthesesWhitespaceTest', + 'testSomething' + ) + ); + } + public function getLinesToBeCoveredProvider() { return array( diff --git a/Tests/_files/CoverageFunctionParenthesesTest.php b/Tests/_files/CoverageFunctionParenthesesTest.php new file mode 100644 index 000000000..33b5fe3de --- /dev/null +++ b/Tests/_files/CoverageFunctionParenthesesTest.php @@ -0,0 +1,11 @@ +publicMethod(); + } +} diff --git a/Tests/_files/CoverageMethodParenthesesWhitespaceTest.php b/Tests/_files/CoverageMethodParenthesesWhitespaceTest.php new file mode 100644 index 000000000..7f67f4b35 --- /dev/null +++ b/Tests/_files/CoverageMethodParenthesesWhitespaceTest.php @@ -0,0 +1,12 @@ +publicMethod(); + } +} From 148516163122d23ec7fbf824b9806095833905ed Mon Sep 17 00:00:00 2001 From: Chris Bandy Date: Tue, 26 Mar 2013 14:38:43 -0500 Subject: [PATCH 2/2] Use possessive quantifiers in @covers annotation expression --- PHP/CodeCoverage.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PHP/CodeCoverage.php b/PHP/CodeCoverage.php index 7f051f297..041d01d93 100644 --- a/PHP/CodeCoverage.php +++ b/PHP/CodeCoverage.php @@ -620,7 +620,7 @@ protected function getLinesToBeCovered($className, $methodName) } $classShortcut = preg_match_all( - '(@coversDefaultClass\s+(?P.*?)\s*$)m', + '(@coversDefaultClass\s+(?P[^\s]++)\s*$)m', $class->getDocComment(), $matches ); @@ -639,7 +639,7 @@ protected function getLinesToBeCovered($className, $methodName) } $match = preg_match_all( - '(@covers\s+(?P.*?)\s*(\(\s*\))?\s*$)m', + '(@covers\s+(?P[^\s()]++)[\s()]*$)m', $docComment, $matches );