@@ -723,52 +723,50 @@ private async Task<List<TestResult>> RunTestOnEmulatorAsync(
723723 // setup cancellation token with the timeout from settings
724724 using ( var cts = new CancellationTokenSource ( _testSessionTimeout ) )
725725 {
726- var cliResult = await cmd . ExecuteBufferedAsync ( cts . Token ) ;
727- var exitCode = cliResult . ExitCode ;
726+ BufferedCommandResult cliResult = await cmd . ExecuteBufferedAsync ( cts . Token ) ;
727+ int exitCode = cliResult . ExitCode ;
728728
729729 // read standard output
730- var output = cliResult . StandardOutput ;
730+ string output = cliResult . StandardOutput ;
731731
732- if ( exitCode == 0 )
732+ try
733733 {
734- try
735- {
736- // process output to gather tests results
737- ParseTestResults ( output , results ) ;
738-
739- _logger . LogMessage ( output , Settings . LoggingLevel . Verbose ) ;
734+ // process output to gather tests results
735+ ParseTestResults ( output , results ) ;
740736
741- if ( ! output . Contains ( Done ) )
742- {
743- results . First ( ) . Outcome = TestOutcome . Failed ;
744- results . First ( ) . ErrorMessage = output ;
745- }
737+ _logger . LogMessage ( output , Settings . LoggingLevel . Verbose ) ;
746738
747- var notPassedOrFailed = results . Where ( m => m . Outcome != TestOutcome . Failed
748- && m . Outcome != TestOutcome . Passed
749- && m . Outcome != TestOutcome . Skipped ) ;
739+ if ( ! output . Contains ( Done ) )
740+ {
741+ results . First ( t => t . Outcome == TestOutcome . None ) . Outcome = TestOutcome . Failed ;
742+ results . First ( t => t . Outcome == TestOutcome . None ) . ErrorMessage = output ;
743+ }
750744
751- if ( notPassedOrFailed . Any ( ) )
752- {
753- notPassedOrFailed . First ( ) . ErrorMessage = output ;
754- }
745+ var notPassedOrFailed = results . Where ( m => m . Outcome != TestOutcome . Failed
746+ && m . Outcome != TestOutcome . Passed
747+ && m . Outcome != TestOutcome . Skipped ) ;
755748
756- }
757- catch ( Exception ex )
749+ if ( notPassedOrFailed . Any ( ) )
758750 {
759- _logger . LogMessage (
760- $ "Fatal exception when processing test results: >>>{ ex . Message } \r \n { output } ",
761- Settings . LoggingLevel . Detailed ) ;
762-
763- results . First ( ) . Outcome = TestOutcome . Failed ;
751+ notPassedOrFailed . Last ( ) . ErrorMessage = output ;
764752 }
753+
765754 }
766- else
755+ catch ( Exception ex )
756+ {
757+ _logger . LogMessage (
758+ $ "Fatal exception when processing test results: >>>{ ex . Message } \r \n { output } ",
759+ Settings . LoggingLevel . Detailed ) ;
760+
761+ results . First ( t => t . Outcome == TestOutcome . None ) . Outcome = TestOutcome . Failed ;
762+ }
763+
764+ if ( exitCode != 0 )
767765 {
768766 _logger . LogPanicMessage ( $ "nanoCLR ended with '{ exitCode } ' exit code.\r \n >>>>>>>>>>>>>\r \n { output } \r \n >>>>>>>>>>>>>") ;
769767
770- results . First ( ) . Outcome = TestOutcome . Failed ;
771- results . First ( ) . ErrorMessage = $ "nanoCLR execution ended with exit code: { exitCode } . Check log for details.";
768+ results . First ( t => t . Outcome == TestOutcome . None ) . Outcome = TestOutcome . Failed ;
769+ results . First ( t => t . Outcome == TestOutcome . None ) . ErrorMessage = $ "nanoCLR execution ended with exit code: { exitCode } . Check log for details.";
772770
773771 return results ;
774772 }
0 commit comments