Skip to content

Commit 8ee9dde

Browse files
committed
Merge remote-tracking branch 'upstream/master' into fix-italics
* upstream/master: Fix another inverted logic error Fix test results logic Added asnychronous test completed events
2 parents 3fe68dc + aecec81 commit 8ee9dde

File tree

2 files changed

+38
-18
lines changed

2 files changed

+38
-18
lines changed

src/OmniSharp.DotNetTest/TestManager.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ private static int FindFreePort()
200200
}
201201
}
202202

203+
protected void EmitTestComletedEvent(DotNetTestResult result)
204+
{
205+
EventEmitter.Emit("TestCompleted", result);
206+
}
207+
203208
protected void EmitTestMessage(TestMessageLevel messageLevel, string message)
204209
{
205210
EventEmitter.Emit(TestMessageEvent.Id,

src/OmniSharp.DotNetTest/VSTestManager.cs

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

Comments
 (0)