From 031991f32f059b64374e6d257cbe573304dd577f Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 13 May 2022 11:40:45 -0500 Subject: Add ability to skip tests at runtime, and skip long running cache tests 6665 --- .../XunitExtensions/SkippableFactMessageBus.cs | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/internal/WixBuildTools.TestSupport/XunitExtensions/SkippableFactMessageBus.cs (limited to 'src/internal/WixBuildTools.TestSupport/XunitExtensions/SkippableFactMessageBus.cs') diff --git a/src/internal/WixBuildTools.TestSupport/XunitExtensions/SkippableFactMessageBus.cs b/src/internal/WixBuildTools.TestSupport/XunitExtensions/SkippableFactMessageBus.cs new file mode 100644 index 00000000..6d01889e --- /dev/null +++ b/src/internal/WixBuildTools.TestSupport/XunitExtensions/SkippableFactMessageBus.cs @@ -0,0 +1,40 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixBuildTools.TestSupport.XunitExtensions +{ + using System.Linq; + using Xunit.Abstractions; + using Xunit.Sdk; + + public class SkippableFactMessageBus : IMessageBus + { + private IMessageBus InnerBus { get; } + + public SkippableFactMessageBus(IMessageBus innerBus) + { + this.InnerBus = innerBus; + } + + public int DynamicallySkippedTestCount { get; private set; } + + public void Dispose() + { + } + + public bool QueueMessage(IMessageSinkMessage message) + { + if (message is ITestFailed testFailed) + { + var exceptionType = testFailed.ExceptionTypes.FirstOrDefault(); + if (exceptionType == typeof(SkipTestException).FullName) + { + ++this.DynamicallySkippedTestCount; + return this.InnerBus.QueueMessage(new TestSkipped(testFailed.Test, testFailed.Messages.FirstOrDefault())); + } + } + + // Nothing we care about, send it on its way + return this.InnerBus.QueueMessage(message); + } + } +} -- cgit v1.2.3-55-g6feb