@@ -374,7 +374,8 @@ public override async Task<RunTestResponse> RunTestAsync(string[] methodNames, s
374374
375375 var testCases = await DiscoverTestsAsync ( methodNames , runSettings , targetFrameworkVersion , cancellationToken ) ;
376376
377- var testResults = new List < TestResult > ( ) ;
377+ var passed = true ;
378+ var results = new List < DotNetTestResult > ( ) ;
378379
379380 if ( testCases . Length > 0 )
380381 {
@@ -400,43 +401,57 @@ public override async Task<RunTestResponse> RunTestAsync(string[] methodNames, s
400401
401402 case MessageType . TestRunStatsChange :
402403 var testRunChange = message . DeserializePayload < TestRunChangedEventArgs > ( ) ;
403- testResults . AddRange ( testRunChange . NewTestResults ) ;
404+ var newResults = ConvertResults ( testRunChange . NewTestResults ) ;
405+ passed = passed && ! testRunChange . NewTestResults . Any ( o => o . Outcome == TestOutcome . Failed ) ;
406+ results . AddRange ( newResults ) ;
407+ foreach ( var result in newResults )
408+ {
409+ EmitTestComletedEvent ( result ) ;
410+ }
404411 break ;
405412
406413 case MessageType . ExecutionComplete :
407414 var payload = message . DeserializePayload < TestRunCompletePayload > ( ) ;
408415 if ( payload . LastRunTests != null && payload . LastRunTests . NewTestResults != null )
409416 {
410- testResults . AddRange ( payload . LastRunTests . NewTestResults ) ;
417+ var lastRunResults = ConvertResults ( payload . LastRunTests . NewTestResults ) ;
418+ passed = passed && ! payload . LastRunTests . NewTestResults . Any ( o => o . Outcome == TestOutcome . Failed ) ;
419+ results . AddRange ( lastRunResults ) ;
420+ foreach ( var result in lastRunResults )
421+ {
422+ EmitTestComletedEvent ( result ) ;
423+ }
411424 }
412425 done = true ;
413426 break ;
414427 }
415428 }
416429 }
417430
418- var results = testResults . Select ( testResult =>
419- new DotNetTestResult
420- {
421- MethodName = testResult . TestCase . FullyQualifiedName ,
422- Outcome = testResult . Outcome . ToString ( ) . ToLowerInvariant ( ) ,
423- ErrorMessage = testResult . ErrorMessage ,
424- ErrorStackTrace = testResult . ErrorStackTrace ,
425- StandardOutput = testResult . Messages
426- . Where ( message => message . Category == TestResultMessage . StandardOutCategory )
427- . Select ( message => message . Text ) . ToArray ( ) ,
428- StandardError = testResult . Messages . Where ( message => message . Category == TestResultMessage . StandardErrorCategory )
429- . Select ( message => message . Text ) . ToArray ( )
430- } ) ;
431-
432431 return new RunTestResponse
433432 {
434433 Results = results . ToArray ( ) ,
435- Pass = ! testResults . Any ( r => r . Outcome == TestOutcome . Failed ) ,
434+ Pass = passed ,
436435 ContextHadNoTests = false
437436 } ;
438437 }
439438
439+ private static IEnumerable < DotNetTestResult > ConvertResults ( IEnumerable < TestResult > results )
440+ {
441+ return results . Select ( testResult => new DotNetTestResult
442+ {
443+ MethodName = testResult . TestCase . FullyQualifiedName ,
444+ Outcome = testResult . Outcome . ToString ( ) . ToLowerInvariant ( ) ,
445+ ErrorMessage = testResult . ErrorMessage ,
446+ ErrorStackTrace = testResult . ErrorStackTrace ,
447+ StandardOutput = testResult . Messages
448+ . Where ( message => message . Category == TestResultMessage . StandardOutCategory )
449+ . Select ( message => message . Text ) . ToArray ( ) ,
450+ StandardError = testResult . Messages . Where ( message => message . Category == TestResultMessage . StandardErrorCategory )
451+ . Select ( message => message . Text ) . ToArray ( )
452+ } ) ;
453+ }
454+
440455 private async Task < TestCase [ ] > DiscoverTestsAsync ( string [ ] methodNames , string runSettings , string targetFrameworkVersion , CancellationToken cancellationToken )
441456 {
442457 SendMessage ( MessageType . StartDiscovery ,
0 commit comments