Skip to content

Commit 0005d6f

Browse files
committed
misc
1 parent 03a7fcc commit 0005d6f

File tree

1 file changed

+32
-22
lines changed

1 file changed

+32
-22
lines changed

src/Subscribers/TestRunner/TestRunnerFinishedSubscriber.php

+32-22
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use PHPUnit\Event\TestRunner\FinishedSubscriber;
1111
use PHPUnit\Metadata\DataProvider;
1212
use PHPUnit\TestRunner\TestResult\Facade;
13+
use PHPUnit\TestRunner\TestResult\TestResult;
1314
use TomasVotruba\PHPUnitJsonResultPrinter\Printer\SimplePrinter;
1415

1516
final class TestRunnerFinishedSubscriber implements FinishedSubscriber
@@ -39,28 +40,7 @@ public function notify(Finished $event): void
3940
],
4041
];
4142

42-
$resultJsonData['failed'] = [];
43-
44-
// print failed tests
45-
foreach ($testResult->testFailedEvents() as $testFailedEvent) {
46-
/** @var Failed $testFailedEvent */
47-
$testMethod = $testFailedEvent->test();
48-
49-
/** @var TestMethod $testMethod */
50-
$failedEventData = [
51-
'test_class' => $testMethod->className(),
52-
'test_method' => $testMethod->methodName(),
53-
'message' => $testFailedEvent->throwable()->message(),
54-
'exception_class' => $testFailedEvent->throwable()->className(),
55-
'line' => $this->resolveLineNumber($testFailedEvent->throwable()->stackTrace()),
56-
];
57-
58-
if ($testMethod->testData()->hasDataFromDataProvider()) {
59-
$failedEventData['data_provider'] = $this->createDataProviderData($testMethod);
60-
}
61-
62-
$resultJsonData['failed'][] = $failedEventData;
63-
}
43+
$resultJsonData['failed'] = $this->createFailedEventDatas($testResult);
6444

6545
$resultJson = json_encode($resultJsonData, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR);
6646
$this->simplePrinter->writeln($resultJson);
@@ -92,4 +72,34 @@ private function resolveLineNumber(string $stackTrace): int
9272
preg_match('#:(?<line>\d+)$#', $stackTrace, $matches);
9373
return (int) $matches['line'];
9474
}
75+
76+
/**
77+
* @return Failed[]
78+
*/
79+
private function createFailedEventDatas(TestResult $testResult): array
80+
{
81+
$failedEventDatas = [];
82+
83+
foreach ($testResult->testFailedEvents() as $testFailedEvent) {
84+
/** @var Failed $testFailedEvent */
85+
$testMethod = $testFailedEvent->test();
86+
87+
/** @var TestMethod $testMethod */
88+
$failedEventData = [
89+
'test_class' => $testMethod->className(),
90+
'test_method' => $testMethod->methodName(),
91+
'message' => $testFailedEvent->throwable()->message(),
92+
'exception_class' => $testFailedEvent->throwable()->className(),
93+
'line' => $this->resolveLineNumber($testFailedEvent->throwable()->stackTrace()),
94+
];
95+
96+
if ($testMethod->testData()->hasDataFromDataProvider()) {
97+
$failedEventData['data_provider'] = $this->createDataProviderData($testMethod);
98+
}
99+
100+
$failedEventDatas[] = $failedEventData;
101+
}
102+
103+
return $failedEventDatas;
104+
}
95105
}

0 commit comments

Comments
 (0)