Skip to content

Commit 8d89759

Browse files
Extract method
1 parent 36bfd5e commit 8d89759

File tree

2 files changed

+51
-55
lines changed

2 files changed

+51
-55
lines changed

.psalm/baseline.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<files psalm-version="5.22.0@fe2c67ec89f358940f90db05efd2d663388b45a6">
2+
<files psalm-version="5.22.2@d768d914152dbbf3486c36398802f74e80cfde48">
33
<file src="src/Event/Dispatcher/DirectDispatcher.php">
44
<UndefinedInterfaceMethod>
55
<code><![CDATA[notify]]></code>
@@ -610,8 +610,10 @@
610610
</file>
611611
<file src="src/Metadata/Api/CodeCoverage.php">
612612
<RedundantCondition>
613-
<code><![CDATA[$metadata instanceof CoversFunction]]></code>
614-
<code><![CDATA[$metadata instanceof UsesFunction]]></code>
613+
<code><![CDATA[$metadata instanceof Covers]]></code>
614+
<code><![CDATA[$metadata instanceof Uses]]></code>
615+
<code><![CDATA[$metadata->isCovers()]]></code>
616+
<code><![CDATA[$metadata->isUses()]]></code>
615617
<code><![CDATA[assert($metadata instanceof Covers)]]></code>
616618
<code><![CDATA[assert($metadata instanceof Uses)]]></code>
617619
</RedundantCondition>

src/Metadata/Api/CodeCoverage.php

Lines changed: 46 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use PHPUnit\Metadata\UsesFunction;
3434
use RecursiveIteratorIterator;
3535
use SebastianBergmann\CodeUnit\CodeUnitCollection;
36+
use SebastianBergmann\CodeUnit\Exception as CodeUnitException;
3637
use SebastianBergmann\CodeUnit\InvalidCodeUnitException;
3738
use SebastianBergmann\CodeUnit\Mapper;
3839

@@ -79,34 +80,14 @@ public function linesToBeCovered(string $className, string $methodName): array|f
7980
$mapper = new Mapper;
8081

8182
foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) {
82-
if ($metadata->isCoversClass() || $metadata->isCoversFunction()) {
83-
assert($metadata instanceof CoversClass || $metadata instanceof CoversFunction);
83+
if (!$metadata->isCoversClass() && !$metadata->isCoversFunction() && !$metadata->isCovers()) {
84+
continue;
85+
}
8486

85-
try {
86-
$codeUnits = $codeUnits->mergeWith(
87-
$mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper()),
88-
);
89-
} catch (InvalidCodeUnitException $e) {
90-
if ($metadata->isCoversClass()) {
91-
if (interface_exists($metadata->className())) {
92-
$type = 'Interface';
93-
} else {
94-
$type = 'Class';
95-
}
96-
} else {
97-
$type = 'Function';
98-
}
87+
assert($metadata instanceof CoversClass || $metadata instanceof CoversFunction || $metadata instanceof Covers);
9988

100-
throw new InvalidCoversTargetException(
101-
sprintf(
102-
'%s "%s" is not a valid target for code coverage',
103-
$type,
104-
$metadata->asStringForCodeUnitMapper(),
105-
),
106-
$e->getCode(),
107-
$e,
108-
);
109-
}
89+
if ($metadata->isCoversClass() || $metadata->isCoversFunction()) {
90+
$codeUnits = $codeUnits->mergeWith($this->mapToCodeUnits($metadata));
11091
} elseif ($metadata->isCovers()) {
11192
assert($metadata instanceof Covers);
11293

@@ -177,34 +158,14 @@ public function linesToBeUsed(string $className, string $methodName): array
177158
$mapper = new Mapper;
178159

179160
foreach (Registry::parser()->forClassAndMethod($className, $methodName) as $metadata) {
180-
if ($metadata->isUsesClass() || $metadata->isUsesFunction()) {
181-
assert($metadata instanceof UsesClass || $metadata instanceof UsesFunction);
161+
if (!$metadata->isUsesClass() && !$metadata->isUsesFunction() && !$metadata->isUses()) {
162+
continue;
163+
}
182164

183-
try {
184-
$codeUnits = $codeUnits->mergeWith(
185-
$mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper()),
186-
);
187-
} catch (InvalidCodeUnitException $e) {
188-
if ($metadata->isUsesClass()) {
189-
if (interface_exists($metadata->className())) {
190-
$type = 'Interface';
191-
} else {
192-
$type = 'Class';
193-
}
194-
} else {
195-
$type = 'Function';
196-
}
165+
assert($metadata instanceof UsesClass || $metadata instanceof UsesFunction || $metadata instanceof Uses);
197166

198-
throw new InvalidCoversTargetException(
199-
sprintf(
200-
'%s "%s" is not a valid target for code coverage',
201-
$type,
202-
$metadata->asStringForCodeUnitMapper(),
203-
),
204-
$e->getCode(),
205-
$e,
206-
);
207-
}
167+
if ($metadata->isUsesClass() || $metadata->isUsesFunction()) {
168+
$codeUnits = $codeUnits->mergeWith($this->mapToCodeUnits($metadata));
208169
} elseif ($metadata->isUses()) {
209170
assert($metadata instanceof Uses);
210171

@@ -319,4 +280,37 @@ private function codeUnitsIgnoredBy(string $className): CodeUnitCollection
319280

320281
return $codeUnits;
321282
}
283+
284+
/**
285+
* @throws InvalidCoversTargetException
286+
*/
287+
private function mapToCodeUnits(CoversClass|CoversFunction|UsesClass|UsesFunction $metadata): CodeUnitCollection
288+
{
289+
$mapper = new Mapper;
290+
291+
try {
292+
return $mapper->stringToCodeUnits($metadata->asStringForCodeUnitMapper());
293+
} catch (CodeUnitException $e) {
294+
if ($metadata->isCoversClass() || $metadata->isUsesClass()) {
295+
if (interface_exists($metadata->className())) {
296+
$type = 'Interface';
297+
} else {
298+
$type = 'Class';
299+
}
300+
} else {
301+
$type = 'Function';
302+
}
303+
304+
throw new InvalidCoversTargetException(
305+
sprintf(
306+
'%s "%s" is not a valid target for code coverage',
307+
$type,
308+
$metadata->asStringForCodeUnitMapper(),
309+
),
310+
$e->getCode(),
311+
$e,
312+
);
313+
}
314+
315+
}
322316
}

0 commit comments

Comments
 (0)