forked from dotnet/runtime
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
We're currently experiencing a bug where conditional skips aren't working in VS. This is caused by https://github.com/xunit/xunit/issues/1782 Commit migrated from dotnet/extensions@cbe90b8
- Loading branch information
Showing
3 changed files
with
106 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
80 changes: 80 additions & 0 deletions
80
.../TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/WORKAROUND_SkippedDataRowTestCase.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
using System; | ||
using System.ComponentModel; | ||
using Xunit.Abstractions; | ||
using Xunit.Sdk; | ||
|
||
namespace Microsoft.AspNetCore.Testing | ||
{ | ||
// This is a workaround for https://github.com/xunit/xunit/issues/1782 - as such, this code is a copy-paste | ||
// from xUnit with the exception of fixing the bug. | ||
// | ||
// This will only work with [ConditionalTheory]. | ||
internal class WORKAROUND_SkippedDataRowTestCase : XunitTestCase | ||
{ | ||
string skipReason; | ||
|
||
/// <summary/> | ||
[EditorBrowsable(EditorBrowsableState.Never)] | ||
[Obsolete("Called by the de-serializer; should only be called by deriving classes for de-serialization purposes")] | ||
public WORKAROUND_SkippedDataRowTestCase() { } | ||
|
||
/// <summary> | ||
/// Initializes a new instance of the <see cref="XunitSkippedDataRowTestCase"/> class. | ||
/// </summary> | ||
/// <param name="diagnosticMessageSink">The message sink used to send diagnostic messages</param> | ||
/// <param name="defaultMethodDisplay">Default method display to use (when not customized).</param> | ||
/// <param name="testMethod">The test method this test case belongs to.</param> | ||
/// <param name="skipReason">The reason that this test case will be skipped</param> | ||
/// <param name="testMethodArguments">The arguments for the test method.</param> | ||
[Obsolete("Please call the constructor which takes TestMethodDisplayOptions")] | ||
public WORKAROUND_SkippedDataRowTestCase(IMessageSink diagnosticMessageSink, | ||
TestMethodDisplay defaultMethodDisplay, | ||
ITestMethod testMethod, | ||
string skipReason, | ||
object[] testMethodArguments = null) | ||
: this(diagnosticMessageSink, defaultMethodDisplay, TestMethodDisplayOptions.None, testMethod, skipReason, testMethodArguments) { } | ||
|
||
/// <summary> | ||
/// Initializes a new instance of the <see cref="XunitSkippedDataRowTestCase"/> class. | ||
/// </summary> | ||
/// <param name="diagnosticMessageSink">The message sink used to send diagnostic messages</param> | ||
/// <param name="defaultMethodDisplay">Default method display to use (when not customized).</param> | ||
/// <param name="defaultMethodDisplayOptions">Default method display options to use (when not customized).</param> | ||
/// <param name="testMethod">The test method this test case belongs to.</param> | ||
/// <param name="skipReason">The reason that this test case will be skipped</param> | ||
/// <param name="testMethodArguments">The arguments for the test method.</param> | ||
public WORKAROUND_SkippedDataRowTestCase(IMessageSink diagnosticMessageSink, | ||
TestMethodDisplay defaultMethodDisplay, | ||
TestMethodDisplayOptions defaultMethodDisplayOptions, | ||
ITestMethod testMethod, | ||
string skipReason, | ||
object[] testMethodArguments = null) | ||
: base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod, testMethodArguments) | ||
{ | ||
this.skipReason = skipReason; | ||
} | ||
|
||
/// <inheritdoc/> | ||
public override void Deserialize(IXunitSerializationInfo data) | ||
{ | ||
// SkipReason has to be read before we call base.Deserialize, this is the workaround. | ||
this.skipReason = data.GetValue<string>("SkipReason"); | ||
|
||
base.Deserialize(data); | ||
} | ||
|
||
/// <inheritdoc/> | ||
protected override string GetSkipReason(IAttributeInfo factAttribute) | ||
{ | ||
return skipReason; | ||
} | ||
|
||
/// <inheritdoc/> | ||
public override void Serialize(IXunitSerializationInfo data) | ||
{ | ||
base.Serialize(data); | ||
|
||
data.AddValue("SkipReason", skipReason); | ||
} | ||
} | ||
} |