Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 27 additions & 25 deletions TUnit.Engine/TUnitMessageBus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,52 +16,54 @@ namespace TUnit.Engine;

internal class TUnitMessageBus(IExtension extension, ICommandLineOptions commandLineOptions, VerbosityService verbosityService, IServiceProvider serviceProvider, ExecuteRequestContext context) : ITUnitMessageBus, IDataProducer
{
private static readonly Type[] _dataTypesProduced = [typeof(TestNodeUpdateMessage), typeof(SessionFileArtifact)];

private readonly SessionUid _sessionSessionUid = context.Request.Session.SessionUid;

private bool? _isConsole;
private bool IsConsole => _isConsole ??= serviceProvider.GetClientInfo().Id.Contains("console", StringComparison.InvariantCultureIgnoreCase);

public async ValueTask Discovered(TestContext testContext)
public ValueTask Discovered(TestContext testContext)
{
if (testContext.IsNotDiscoverable)
{
return;
return ValueTask.CompletedTask;
}

await context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
return new ValueTask(context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
sessionUid: _sessionSessionUid,
testNode: testContext.ToTestNode(DiscoveredTestNodeStateProperty.CachedInstance)
));
)));
}

public async ValueTask InProgress(TestContext testContext)
public ValueTask InProgress(TestContext testContext)
{
await context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
return new ValueTask(context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
sessionUid: _sessionSessionUid,
testNode: testContext.ToTestNode(InProgressTestNodeStateProperty.CachedInstance)
));
)));
}

public async ValueTask Passed(TestContext testContext, DateTimeOffset start)
public ValueTask Passed(TestContext testContext, DateTimeOffset start)
{
if (!testContext.ReportResult)
{
return;
return ValueTask.CompletedTask;
}

var testNode = testContext.ToTestNode(PassedTestNodeStateProperty.CachedInstance);

await context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
return new ValueTask(context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
sessionUid: _sessionSessionUid,
testNode: testNode
));
)));
}

public async ValueTask Failed(TestContext testContext, Exception exception, DateTimeOffset start)
public ValueTask Failed(TestContext testContext, Exception exception, DateTimeOffset start)
{
if (!testContext.ReportResult)
{
return;
return ValueTask.CompletedTask;
}

exception = SimplifyStacktrace(exception);
Expand All @@ -72,10 +74,10 @@ public async ValueTask Failed(TestContext testContext, Exception exception, Date

var testNode = testContext.ToTestNode(updateType);

await context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
return new ValueTask(context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
sessionUid: _sessionSessionUid,
testNode: testNode
));
)));
}

private Exception SimplifyStacktrace(Exception exception)
Expand All @@ -97,36 +99,36 @@ private Exception SimplifyStacktrace(Exception exception)
return exception;
}

public async ValueTask Skipped(TestContext testContext, string reason)
public ValueTask Skipped(TestContext testContext, string reason)
{
var testNode = testContext.ToTestNode(new SkippedTestNodeStateProperty(reason));

await context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
return new ValueTask(context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
sessionUid: _sessionSessionUid,
testNode: testNode
));
)));
}

public async ValueTask Cancelled(TestContext testContext, DateTimeOffset start)
public ValueTask Cancelled(TestContext testContext, DateTimeOffset start)
{
var testNode = testContext.ToTestNode(new CancelledTestNodeStateProperty());

await context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
return new ValueTask(context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
sessionUid: _sessionSessionUid,
testNode: testNode
));
)));
}

public async ValueTask SessionArtifact(Artifact artifact)
public ValueTask SessionArtifact(Artifact artifact)
{
await context.MessageBus.PublishAsync(this,
return new ValueTask(context.MessageBus.PublishAsync(this,
new SessionFileArtifact(
context.Request.Session.SessionUid,
artifact.File,
artifact.DisplayName,
artifact.Description
)
);
));
}

private static TestNodeStateProperty GetFailureStateProperty(TestContext testContext, Exception e, TimeSpan duration)
Expand Down Expand Up @@ -159,5 +161,5 @@ public Task<bool> IsEnabledAsync()

public string Description => extension.Description;

public Type[] DataTypesProduced => [typeof(TestNodeUpdateMessage), typeof(SessionFileArtifact)];
public Type[] DataTypesProduced => _dataTypesProduced;
}
Loading