62 lines
1.6 KiB
C#
62 lines
1.6 KiB
C#
using System.Threading;
|
|
using Xunit.Abstractions;
|
|
|
|
namespace Xunit.Runner.Worker.MessageSinks
|
|
{
|
|
internal abstract class BaseTestRunSink : BaseMessageSink
|
|
{
|
|
public ManualResetEvent Finished { get; }
|
|
|
|
protected BaseTestRunSink()
|
|
{
|
|
Finished = new ManualResetEvent(false);
|
|
}
|
|
|
|
protected override void DisposeCore(bool disposing)
|
|
{
|
|
Finished.Dispose();
|
|
}
|
|
|
|
protected override bool OnMessage(IMessageSinkMessage message)
|
|
{
|
|
var testStarted = message as ITestStarting;
|
|
if (testStarted != null)
|
|
{
|
|
OnTestStarted(testStarted);
|
|
}
|
|
|
|
var testFailed = message as ITestFailed;
|
|
if (testFailed != null)
|
|
{
|
|
OnTestFailed(testFailed);
|
|
}
|
|
|
|
var testPassed = message as ITestPassed;
|
|
if (testPassed != null)
|
|
{
|
|
OnTestPassed(testPassed);
|
|
}
|
|
|
|
var testSkipped = message as ITestSkipped;
|
|
if (testSkipped != null)
|
|
{
|
|
OnTestSkipped(testSkipped);
|
|
}
|
|
|
|
if (message is ITestAssemblyFinished)
|
|
{
|
|
Finished.Set();
|
|
}
|
|
|
|
return ShouldContinue;
|
|
}
|
|
|
|
protected virtual bool ShouldContinue => true;
|
|
|
|
protected abstract void OnTestStarted(ITestStarting testStarted);
|
|
protected abstract void OnTestFailed(ITestFailed testFailed);
|
|
protected abstract void OnTestPassed(ITestPassed testPassed);
|
|
protected abstract void OnTestSkipped(ITestSkipped testSkipped);
|
|
}
|
|
}
|