19
19
use PHPUnit \Event \Facade as EventFacade ;
20
20
use PHPUnit \Event \TestRunner \WarningTriggered ;
21
21
use PHPUnit \Runner \CodeCoverage ;
22
+ use PHPUnit \Runner \ResultCache \DefaultResultCache ;
22
23
use PHPUnit \TestRunner \TestResult \Facade as TestResultFacade ;
23
24
use PHPUnit \TestRunner \TestResult \TestResult ;
24
25
use PHPUnit \TextUI \Configuration \CodeCoverageFilterRegistry ;
@@ -79,7 +80,10 @@ final class WrapperRunner implements RunnerInterface
79
80
private array $ unexpectedOutputFiles = [];
80
81
81
82
/** @var list<SplFileInfo> */
82
- private array $ testresultFiles = [];
83
+ private array $ resultCacheFiles = [];
84
+
85
+ /** @var list<SplFileInfo> */
86
+ private array $ testResultFiles = [];
83
87
84
88
/** @var list<SplFileInfo> */
85
89
private array $ coverageFiles = [];
@@ -264,7 +268,8 @@ private function startWorker(int $token): WrapperWorker
264
268
$ this ->batches [$ token ] = 0 ;
265
269
266
270
$ this ->unexpectedOutputFiles [] = $ worker ->unexpectedOutputFile ;
267
- $ this ->testresultFiles [] = $ worker ->testresultFile ;
271
+ $ this ->unexpectedOutputFiles [] = $ worker ->unexpectedOutputFile ;
272
+ $ this ->testResultFiles [] = $ worker ->testResultFile ;
268
273
269
274
if (isset ($ worker ->junitFile )) {
270
275
$ this ->junitFiles [] = $ worker ->junitFile ;
@@ -298,12 +303,12 @@ private function destroyWorker(int $token): void
298
303
299
304
private function complete (TestResult $ testResultSum ): int
300
305
{
301
- foreach ($ this ->testresultFiles as $ testresultFile ) {
302
- if (! $ testresultFile ->isFile ()) {
306
+ foreach ($ this ->testResultFiles as $ testResultFile ) {
307
+ if (! $ testResultFile ->isFile ()) {
303
308
continue ;
304
309
}
305
310
306
- $ contents = file_get_contents ($ testresultFile ->getPathname ());
311
+ $ contents = file_get_contents ($ testResultFile ->getPathname ());
307
312
assert ($ contents !== false );
308
313
$ testResult = unserialize ($ contents );
309
314
assert ($ testResult instanceof TestResult);
@@ -360,9 +365,20 @@ private function complete(TestResult $testResultSum): int
360
365
$ testResultSum ->phpNotices (),
361
366
$ testResultSum ->phpWarnings (),
362
367
$ testResultSum ->numberOfIssuesIgnoredByBaseline (),
363
-
364
368
);
365
369
370
+ if ($ this ->options ->configuration ->cacheResult ()) {
371
+ $ resultCacheSum = new DefaultResultCache ($ this ->options ->configuration ->testResultCacheFile ());
372
+ foreach ($ this ->resultCacheFiles as $ resultCacheFile ) {
373
+ $ resultCache = new DefaultResultCache ($ resultCacheFile ->getPathname ());
374
+ $ resultCache ->load ();
375
+
376
+ $ resultCacheSum ->mergeWith ($ resultCache );
377
+ }
378
+
379
+ $ resultCacheSum ->persist ();
380
+ }
381
+
366
382
$ this ->printer ->printResults (
367
383
$ testResultSum ,
368
384
$ this ->teamcityFiles ,
@@ -375,7 +391,7 @@ private function complete(TestResult $testResultSum): int
375
391
$ exitcode = Result::exitCode ($ this ->options ->configuration , $ testResultSum );
376
392
377
393
$ this ->clearFiles ($ this ->unexpectedOutputFiles );
378
- $ this ->clearFiles ($ this ->testresultFiles );
394
+ $ this ->clearFiles ($ this ->testResultFiles );
379
395
$ this ->clearFiles ($ this ->coverageFiles );
380
396
$ this ->clearFiles ($ this ->junitFiles );
381
397
$ this ->clearFiles ($ this ->teamcityFiles );
0 commit comments