Skip to content

Commit e205244

Browse files
committed
#408: Add ability to print live output messages
1 parent 06087e3 commit e205244

File tree

5 files changed

+26
-4
lines changed

5 files changed

+26
-4
lines changed

Versions.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
<NerdbankGitVersioningVersion>3.6.133</NerdbankGitVersioningVersion>
99
<NSubstituteVersion>5.1.0</NSubstituteVersion>
1010
<TunnelVisionLabsReferenceAssemblyAnnotatorVersion>1.0.0-alpha.160</TunnelVisionLabsReferenceAssemblyAnnotatorVersion>
11-
<XunitAnalyzersVersion>1.13.0</XunitAnalyzersVersion>
12-
<XunitVersion>2.8.0</XunitVersion>
11+
<XunitAnalyzersVersion>1.14.0-pre.3</XunitAnalyzersVersion>
12+
<XunitVersion>2.8.1-pre.10</XunitVersion>
1313
</PropertyGroup>
1414

1515
</Project>

src/xunit.runner.visualstudio/Sinks/VsExecutionSink.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ public VsExecutionSink(
2222
ITestExecutionRecorder recorder,
2323
LoggerHelper logger,
2424
Dictionary<string, TestCase> testCasesMap,
25-
Func<bool> cancelledThunk)
25+
Func<bool> cancelledThunk,
26+
bool showLiveOutput)
2627
{
2728
this.innerSink = innerSink;
2829
this.recorder = recorder;
@@ -45,6 +46,9 @@ public VsExecutionSink(
4546
Execution.TestMethodCleanupFailureEvent += HandleTestMethodCleanupFailure;
4647
Execution.TestPassedEvent += HandleTestPassed;
4748
Execution.TestSkippedEvent += HandleTestSkipped;
49+
50+
if (showLiveOutput)
51+
Execution.TestOutputEvent += HandleTestOutput;
4852
}
4953

5054
public ExecutionSummary ExecutionSummary { get; private set; }
@@ -127,6 +131,12 @@ void HandleTestFailed(MessageHandlerArgs<ITestFailed> args)
127131
HandleCancellation(args);
128132
}
129133

134+
void HandleTestOutput(MessageHandlerArgs<ITestOutput> args)
135+
{
136+
var testOutput = args.Message;
137+
logger.Log(" {0} [OUTPUT] {1}", testOutput.Test.DisplayName, testOutput.Output.TrimEnd());
138+
}
139+
130140
void HandleTestPassed(MessageHandlerArgs<ITestPassed> args)
131141
{
132142
var testPassed = args.Message;

src/xunit.runner.visualstudio/Utility/RunSettings.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class RunSettings
2323
public bool? PreEnumerateTheories { get; set; }
2424
public string? ReporterSwitch { get; set; }
2525
public bool? ShadowCopy { get; set; }
26+
public bool? ShowLiveOutput { get; set; }
2627
public bool? StopOnFail { get; set; }
2728
public string? TargetFrameworkVersion { get; set; }
2829

@@ -54,6 +55,8 @@ public void CopyTo(TestAssemblyConfiguration configuration)
5455
configuration.PreEnumerateTheories = PreEnumerateTheories;
5556
if (ShadowCopy.HasValue)
5657
configuration.ShadowCopy = ShadowCopy;
58+
if (ShowLiveOutput.HasValue)
59+
configuration.ShowLiveOutput = ShowLiveOutput;
5760
if (StopOnFail.HasValue)
5861
configuration.StopOnFail = StopOnFail;
5962
}
@@ -154,6 +157,10 @@ public static RunSettings Parse(string? settingsXml)
154157
if (bool.TryParse(shadowCopyString, out var shadowCopy))
155158
result.ShadowCopy = shadowCopy;
156159

160+
var showLiveOutputString = xunitElement.Element(Constants.Xunit.ShowLiveOutput)?.Value;
161+
if (bool.TryParse(showLiveOutputString, out var showLiveOutput))
162+
result.ShowLiveOutput = showLiveOutput;
163+
157164
var stopOnFailString = xunitElement.Element(Constants.Xunit.StopOnFail)?.Value;
158165
if (bool.TryParse(stopOnFailString, out var stopOnFail))
159166
result.StopOnFail = stopOnFail;
@@ -243,6 +250,7 @@ public static class Xunit
243250
public const string PreEnumerateTheories = "PreEnumerateTheories";
244251
public const string ReporterSwitch = "ReporterSwitch";
245252
public const string ShadowCopy = "ShadowCopy";
253+
public const string ShowLiveOutput = "ShowLiveOutput";
246254
public const string StopOnFail = "StopOnFail";
247255
}
248256
}

src/xunit.runner.visualstudio/VsTestRunner.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ void RunTestsInAssembly(
543543

544544
reporterMessageHandler.OnMessage(new TestAssemblyExecutionStarting(runInfo.Assembly, executionOptions));
545545

546-
using var vsExecutionSink = new VsExecutionSink(reporterMessageHandler, frameworkHandle, logger, testCasesMap, () => cancelled);
546+
using var vsExecutionSink = new VsExecutionSink(reporterMessageHandler, frameworkHandle, logger, testCasesMap, () => cancelled, executionOptions.GetShowLiveOutputOrDefault());
547547
var executionSinkOptions = new ExecutionSinkOptions
548548
{
549549
DiagnosticMessageSink = diagnosticsSinkRemote,

test/test.xunit.runner.visualstudio/RunSettingsTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using Xunit;
3+
using Xunit.Abstractions;
34
using Xunit.Runner.VisualStudio;
45

56
public class RunSettingsTests
@@ -23,6 +24,7 @@ void AssertDefaultValues(RunSettings runSettings)
2324
Assert.Null(runSettings.PreEnumerateTheories);
2425
Assert.Null(runSettings.ReporterSwitch);
2526
Assert.Null(runSettings.ShadowCopy);
27+
Assert.Null(runSettings.ShowLiveOutput);
2628
Assert.Null(runSettings.StopOnFail);
2729
Assert.Null(runSettings.TargetFrameworkVersion);
2830
}
@@ -123,6 +125,7 @@ public void RunSettingsHelperShouldReadBooleanValuesCorrectly(bool testValue)
123125
<ParallelizeTestCollections>{testValueString}</ParallelizeTestCollections>
124126
<PreEnumerateTheories>{testValueString}</PreEnumerateTheories>
125127
<ShadowCopy>{testValueString}</ShadowCopy>
128+
<ShowLiveOutput>{testValueString}</ShowLiveOutput>
126129
<StopOnFail>{testValueString}</StopOnFail>
127130
</xUnit>
128131
</RunSettings>";
@@ -140,6 +143,7 @@ public void RunSettingsHelperShouldReadBooleanValuesCorrectly(bool testValue)
140143
Assert.Equal(testValue, runSettings.ParallelizeTestCollections);
141144
Assert.Equal(testValue, runSettings.PreEnumerateTheories);
142145
Assert.Equal(testValue, runSettings.ShadowCopy);
146+
Assert.Equal(testValue, runSettings.ShowLiveOutput);
143147
Assert.Equal(testValue, runSettings.StopOnFail);
144148
}
145149

0 commit comments

Comments
 (0)