Skip to content

Commit 9f6e02c

Browse files
authored
Improvements in parsing test execution (#321)
1 parent 4e87a51 commit 9f6e02c

File tree

1 file changed

+30
-32
lines changed

1 file changed

+30
-32
lines changed

source/TestAdapter/Executor.cs

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)