Skip to content

Commit 9e037f5

Browse files
Fix handling of Class<extended>.
1 parent 9c54c18 commit 9e037f5

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

PHP/CodeCoverage/Util.php

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,17 @@ public static function getLinesToBeCovered($className, $methodName)
9393

9494
foreach (self::$templateMethods as $templateMethod) {
9595
if ($class->hasMethod($templateMethod)) {
96-
$reflector = $class->getMethod($templateMethod);
96+
$reflector = $class->getMethod($templateMethod);
9797
$docComment .= $reflector->getDocComment();
9898
unset($reflector);
9999
}
100100
}
101101

102102
if (preg_match_all('/@covers[\s]+([\!<>\:\.\w]+)([\s]+<extended>)?/', $docComment, $matches)) {
103-
foreach ($matches[1] as $i => $method) {
103+
foreach ($matches[1] as $coveredElement) {
104104
$codeToCoverList = array_merge(
105105
$codeToCoverList,
106-
self::resolveCoversToReflectionObjects(
107-
$method, !empty($matches[2][$i])
108-
)
106+
self::resolveCoversToReflectionObjects($coveredElement)
109107
);
110108
}
111109

@@ -166,16 +164,22 @@ public static function getLinesToBeIgnored($filename)
166164
}
167165

168166
/**
169-
* @param string $method
170-
* @param boolean $extended
167+
* @param string $coveredElement
171168
* @return array
172169
*/
173-
protected static function resolveCoversToReflectionObjects($method, $extended)
170+
protected static function resolveCoversToReflectionObjects($coveredElement)
174171
{
172+
$extended = FALSE;
173+
174+
if (strpos($coveredElement, '<extended>') !== FALSE) {
175+
$extended = TRUE;
176+
$coveredElement = str_replace('<extended>', '', $coveredElement);
177+
}
178+
175179
$codeToCoverList = array();
176180

177-
if (strpos($method, '::') !== FALSE) {
178-
list($className, $methodName) = explode('::', $method);
181+
if (strpos($coveredElement, '::') !== FALSE) {
182+
list($className, $methodName) = explode('::', $coveredElement);
179183

180184
if ($methodName{0} == '<') {
181185
$classes = array($className);
@@ -230,13 +234,13 @@ class_parents($className)
230234
}
231235
}
232236
} else {
233-
$classes = array($method);
237+
$classes = array($coveredElement);
234238

235239
if ($extended) {
236240
$classes = array_merge(
237241
$classes,
238-
class_implements($method),
239-
class_parents($method)
242+
class_implements($coveredElement),
243+
class_parents($coveredElement)
240244
);
241245
}
242246

Tests/PHP/CodeCoverage/UtilTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public function testGetLinesToBeCovered()
8686
$this->assertEquals(
8787
array(
8888
'/usr/local/src/code-coverage/Tests/_files/CoveredClass.php' =>
89-
array_merge(range(2, 17), range(19, 36))
89+
array_merge(range(19, 36), range(2, 17))
9090
),
9191
PHP_CodeCoverage_Util::getLinesToBeCovered(
9292
'CoverageClassExtendedTest', 'testPublicMethod'

0 commit comments

Comments
 (0)