Skip to content

Commit 1cedd8b

Browse files
Initial work on sebastianbergmann#420
1 parent 50bf9c4 commit 1cedd8b

File tree

1 file changed

+53
-21
lines changed

1 file changed

+53
-21
lines changed

src/CodeCoverage.php

Lines changed: 53 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -936,30 +936,24 @@ private function performUnintentionallyCoveredCodeCheck(array &$data, array $lin
936936
*/
937937
private function performUnexecutedCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed)
938938
{
939-
$expectedLines = $this->getAllowedLines(
940-
$linesToBeCovered,
941-
$linesToBeUsed
942-
);
943-
944-
foreach ($data as $file => $_data) {
945-
foreach (array_keys($_data) as $line) {
946-
if (!isset($expectedLines[$file][$line])) {
947-
continue;
948-
}
949-
950-
unset($expectedLines[$file][$line]);
939+
$executedCodeUnits = $this->coverageToCodeUnits($data);
940+
$message = '';
941+
942+
foreach ($this->linesToCodeUnits($linesToBeCovered) as $codeUnit) {
943+
if (!in_array($codeUnit, $executedCodeUnits)) {
944+
$message .= sprintf(
945+
'- %s is expected to be covered but was not executed' . "\n",
946+
$codeUnit
947+
);
951948
}
952949
}
953950

954-
$message = '';
955-
956-
foreach ($expectedLines as $file => $lines) {
957-
if (empty($lines)) {
958-
continue;
959-
}
960-
961-
foreach (array_keys($lines) as $line) {
962-
$message .= sprintf('- %s:%d' . PHP_EOL, $file, $line);
951+
foreach ($this->linesToCodeUnits($linesToBeUsed) as $codeUnit) {
952+
if (!in_array($codeUnit, $executedCodeUnits)) {
953+
$message .= sprintf(
954+
'- %s is expected to be used but was not executed' . "\n",
955+
$codeUnit
956+
);
963957
}
964958
}
965959

@@ -1059,4 +1053,42 @@ private function processUnintentionallyCoveredUnits(array $unintentionallyCovere
10591053

10601054
return array_values($unintentionallyCoveredUnits);
10611055
}
1056+
1057+
/**
1058+
* @param array $data
1059+
*
1060+
* @return array
1061+
*/
1062+
private function coverageToCodeUnits(array $data)
1063+
{
1064+
$codeUnits = [];
1065+
1066+
foreach ($data as $filename => $lines) {
1067+
foreach ($lines as $line => $flag) {
1068+
if ($flag == 1) {
1069+
$codeUnits[] = $this->wizard->lookup($filename, $line);
1070+
}
1071+
}
1072+
}
1073+
1074+
return array_unique($codeUnits);
1075+
}
1076+
1077+
/**
1078+
* @param array $data
1079+
*
1080+
* @return array
1081+
*/
1082+
private function linesToCodeUnits(array $data)
1083+
{
1084+
$codeUnits = [];
1085+
1086+
foreach ($data as $filename => $lines) {
1087+
foreach ($lines as $line) {
1088+
$codeUnits[] = $this->wizard->lookup($filename, $line);
1089+
}
1090+
}
1091+
1092+
return array_unique($codeUnits);
1093+
}
10621094
}

0 commit comments

Comments
 (0)