diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs index 8f2fe25d03..1fe030eab1 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs @@ -11,7 +11,7 @@ public class ArgumentProcessorTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void PassingNoArgumentsToVsTestConsoleShouldPrintHelpMessage(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -32,7 +32,7 @@ public void PassingNoArgumentsToVsTestConsoleShouldPrintHelpMessage(RunnerInfo r } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void PassingInvalidArgumentsToVsTestConsoleShouldNotPrintHelpMessage(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/BlameDataCollectorTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/BlameDataCollectorTests.cs index b8f9f08e99..eafbcef5b2 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/BlameDataCollectorTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/BlameDataCollectorTests.cs @@ -40,7 +40,7 @@ public BlameDataCollectorTests() [TestMethod] [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void BlameDataCollectorShouldGiveCorrectTestCaseName(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -55,8 +55,8 @@ public void BlameDataCollectorShouldGiveCorrectTestCaseName(RunnerInfo runnerInf [TestMethod] [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: NetFx, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void BlameDataCollectorShouldOutputDumpFile(RunnerInfo runnerInfo) { @@ -79,7 +79,7 @@ public void BlameDataCollectorShouldOutputDumpFile(RunnerInfo runnerInfo) [TestMethod] [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void BlameDataCollectorShouldNotOutputDumpFileWhenNoCrashOccurs(RunnerInfo runnerInfo) { @@ -103,7 +103,7 @@ public void BlameDataCollectorShouldNotOutputDumpFileWhenNoCrashOccurs(RunnerInf [TestMethod] [TestCategory("Windows-Review")] // This tests .net runner and .net framework runner, together with .net framework testhost. - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void BlameDataCollectorShouldOutputDumpFileWhenNoCrashOccursButCollectAlwaysIsEnabled(RunnerInfo runnerInfo) { @@ -125,7 +125,7 @@ public void BlameDataCollectorShouldOutputDumpFileWhenNoCrashOccursButCollectAlw } [TestMethod] - [NetCoreRunner("net481;net11.0")] + [TestMatrix(console: Net)] public void HangDumpOnTimeout(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -147,7 +147,7 @@ public void HangDumpOnTimeout(RunnerInfo runnerInfo) [TestMethod] // .NET testhost does not support dump on exit - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void CrashDumpWhenThereIsNoTimeout(RunnerInfo runnerInfo) { @@ -169,7 +169,7 @@ public void CrashDumpWhenThereIsNoTimeout(RunnerInfo runnerInfo) [TestMethod] // .NET tfms do not support dump on exit, but runner does - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void CrashDumpOnExit(RunnerInfo runnerInfo) { @@ -190,7 +190,7 @@ public void CrashDumpOnExit(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreRunner("net481;net11.0")] + [TestMatrix(console: Net)] public void CrashDumpOnStackOverflow(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -210,7 +210,7 @@ public void CrashDumpOnStackOverflow(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreRunner(NET)] + [TestMatrix(console: Net, testHost: Net)] public void CrashDumpChildProcesses(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -224,7 +224,7 @@ public void CrashDumpChildProcesses(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreRunner("net481;net11.0")] + [TestMatrix(console: Net)] public void HangDumpChildProcesses(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -240,7 +240,7 @@ public void HangDumpChildProcesses(RunnerInfo runnerInfo) [TestMethod] [DoNotParallelize] // Modifies the test asset's runtimeconfig.json on disk. - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void HangDumpShouldNotHangWhenTestHostFailsToStart(RunnerInfo runnerInfo) { // When testhost can't start (e.g. wrong runtime version), the inactivity timer @@ -281,8 +281,8 @@ public void HangDumpShouldNotHangWhenTestHostFailsToStart(RunnerInfo runnerInfo) [TestMethod] [TestCategory("Windows-Review")] [DoNotParallelize] // Installs/uninstalls procdump as machine-wide postmortem debugger via HKLM registry. - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void BlameDataCollectorAeDebuggerShouldCollectDump(RunnerInfo runnerInfo) { // For convenience skip locally, but never skip in CI. If this cannot pass in CI we are not testing it at all. diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CodeCoverageTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CodeCoverageTests.cs index a7f4994e6e..39e11f0767 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CodeCoverageTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CodeCoverageTests.cs @@ -48,8 +48,8 @@ public enum SettingsType public class CodeCoverageTests : CodeCoverageAcceptanceTestBase { [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CollectCodeCoverageWithCollectOptionForx86(RunnerInfo runnerInfo) { var parameters = new TestParameters() @@ -67,8 +67,8 @@ public void CollectCodeCoverageWithCollectOptionForx86(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CollectCodeCoverageWithCollectOptionForx64(RunnerInfo runnerInfo) { var parameters = new TestParameters() @@ -86,8 +86,8 @@ public void CollectCodeCoverageWithCollectOptionForx64(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CollectCodeCoverageX86WithRunSettings(RunnerInfo runnerInfo) { var parameters = new TestParameters() @@ -105,8 +105,8 @@ public void CollectCodeCoverageX86WithRunSettings(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CollectCodeCoverageX64WithRunSettings(RunnerInfo runnerInfo) { var parameters = new TestParameters() @@ -124,8 +124,8 @@ public void CollectCodeCoverageX64WithRunSettings(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CodeCoverageShouldAvoidExclusionsX86(RunnerInfo runnerInfo) { var parameters = new TestParameters() @@ -146,8 +146,8 @@ public void CodeCoverageShouldAvoidExclusionsX86(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CodeCoverageShouldAvoidExclusionsX64(RunnerInfo runnerInfo) { var parameters = new TestParameters() @@ -168,8 +168,8 @@ public void CodeCoverageShouldAvoidExclusionsX64(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CollectCodeCoverageSpecifyOutputFormatXml(RunnerInfo runnerInfo) { var parameters = new TestParameters() @@ -187,8 +187,8 @@ public void CollectCodeCoverageSpecifyOutputFormatXml(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void CollectCodeCoverageSpecifyOutputFormatCoberturaOverrideRunSettingsConfiguration(RunnerInfo runnerInfo) { var parameters = new TestParameters() diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CreateNoNewWindowTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CreateNoNewWindowTests.cs index 5122bec933..cfdeab3c83 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CreateNoNewWindowTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/CreateNoNewWindowTests.cs @@ -14,7 +14,7 @@ public class CreateNoNewWindowTests : AcceptanceTestBase [TestMethod] // CreateNoNewWindow maps to the Windows-only process CreateNoWindow flag and only runs on the .NET Framework testhost. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: false)] + [TestMatrix(testHost: NetFx)] public void WhenCreateNoNewWindowIsFalse_DiagShowsCreateNoWindowFalse(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -38,7 +38,7 @@ public void WhenCreateNoNewWindowIsFalse_DiagShowsCreateNoWindowFalse(RunnerInfo [TestMethod] // CreateNoNewWindow maps to the Windows-only process CreateNoWindow flag and only runs on the .NET Framework testhost. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: false)] + [TestMatrix(testHost: NetFx)] public void WhenCreateNoNewWindowIsTrue_DiagShowsCreateNoWindowTrue(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -62,7 +62,7 @@ public void WhenCreateNoNewWindowIsTrue_DiagShowsCreateNoWindowTrue(RunnerInfo r [TestMethod] // CreateNoNewWindow maps to the Windows-only process CreateNoWindow flag and only runs on the .NET Framework testhost. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: false)] + [TestMatrix(testHost: NetFx)] public void WhenCreateNoNewWindowIsNotSet_DefaultIsTrue(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectionTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectionTests.cs index af0b35edcc..f9d8995ba3 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectionTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectionTests.cs @@ -20,7 +20,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class DataCollectionTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExecuteTestsWithDataCollection(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -43,7 +43,7 @@ public void ExecuteTestsWithDataCollection(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExecuteTestsWithDataCollectionUsingCollectArgument(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -66,7 +66,7 @@ public void ExecuteTestsWithDataCollectionUsingCollectArgument(RunnerInfo runner } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DataCollectorAssemblyLoadingShouldNotThrowErrorForNetCore(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -80,7 +80,7 @@ public void DataCollectorAssemblyLoadingShouldNotThrowErrorForNetCore(RunnerInfo [TestMethod] // .NET Framework testhost-specific assembly loading; not applicable to the netcore testhost. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void DataCollectorAssemblyLoadingShouldNotThrowErrorForFullFramework(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -92,7 +92,7 @@ public void DataCollectorAssemblyLoadingShouldNotThrowErrorForFullFramework(Runn } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DataCollectorAttachmentProcessor(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectorTests.Coverlet.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectorTests.Coverlet.cs index 70ee8055db..848a6e55a7 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectorTests.Coverlet.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DataCollectorTests.Coverlet.cs @@ -14,7 +14,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class DataCollectorTestsCoverlets : AcceptanceTestBase { [TestMethod] - [NetCoreRunner(HOST_NET)] + [TestMatrix(console: Net, testHost: Net)] public void RunCoverletCoverage(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DebugAssertTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DebugAssertTests.cs index d6578bb9d8..23f59682f0 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DebugAssertTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DebugAssertTests.cs @@ -11,7 +11,7 @@ public class DebugAssertTests : AcceptanceTestBase { [TestMethod] // this is core only, there is nothing we can do about TPDebug.Assert crashing the process on framework - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunningTestWithAFailingDebugAssertDoesNotCrashTheHostingProcess(RunnerInfo runnerInfo) { // when debugging this test in case it starts failing, be aware that the default behavior of TPDebug.Assert diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DifferentTestFrameworkSimpleTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DifferentTestFrameworkSimpleTests.cs index db1d2a9e00..d1520a787a 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DifferentTestFrameworkSimpleTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DifferentTestFrameworkSimpleTests.cs @@ -15,7 +15,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class DifferentTestFrameworkSimpleTests : AcceptanceTestBase { [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] + [TestMatrix(testHost: NetFx, inProcess: true)] public void NonDllRunAllTestExecution(RunnerInfo runnerInfo) { // This used to test Chutzpah, to prove that we can run tests that are not shipped in dlls. @@ -36,7 +36,7 @@ public void NonDllRunAllTestExecution(RunnerInfo runnerInfo) [TestMethod] // vstest.console is x64 now, but x86 run "in process" run should still succeed by being run in x86 testhost // Skip .NET (Core) tests because we test them below. - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true, useCoreRunner: false)] + [TestMatrix(console: NetFx, testHost: NetFx, inProcess: true)] public void CPPRunAllTestExecutionNetFramework(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -48,7 +48,7 @@ public void CPPRunAllTestExecutionNetFramework(RunnerInfo runnerInfo) [TestCategory("Windows-Review")] // vstest.console is 64-bit now, run in process to test the 64-bit native dll // Skip .NET (Core) tests because we test them below. - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true, useCoreRunner: false)] + [TestMatrix(console: NetFx, testHost: NetFx, inProcess: true)] public void CPPRunAllTestExecutionPlatformx64NetFramework(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -60,7 +60,7 @@ public void CPPRunAllTestExecutionPlatformx64NetFramework(RunnerInfo runnerInfo) // C++ tests cannot run in .NET Framework host under .NET Core, because we only ship .NET Standard CPP adapter in .NET Core // We also don't test x86 for .NET Core, because the resolver there does not switch between x86 and x64 correctly, it just uses the parent process bitness. // We run this on netcore31 and not the default netcore21 because netcore31 is the minimum tfm that has the runtime features we need, such as additionaldeps. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false, useCoreRunner: true)] + [TestMatrix(console: Net, testHost: Net)] public void CPPRunAllTestExecutionPlatformx64Net(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -68,8 +68,8 @@ public void CPPRunAllTestExecutionPlatformx64Net(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx, inProcess: true)] + [TestMatrix(testHost: Net)] public void NUnitRunAllTestExecution(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -84,8 +84,8 @@ public void NUnitRunAllTestExecution(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx, inProcess: true)] + [TestMatrix(testHost: Net)] public void XUnitRunAllTestExecution(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DisableAppdomainTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DisableAppdomainTests.cs index 1e18cf6e7f..15c0ca72ec 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DisableAppdomainTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DisableAppdomainTests.cs @@ -17,7 +17,7 @@ public class DisableAppdomainTests : AcceptanceTestBase [TestMethod] [TestCategory("Windows")] // Run in .NET Framework testhost, disabling appdomain will force running out of process in all cases. - [NetFullTargetFrameworkDataSource(inProcess: true)] + [TestMatrix(testHost: NetFx, inProcess: true)] public void DisableAppdomainTest(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -30,7 +30,7 @@ public void DisableAppdomainTest(RunnerInfo runnerInfo) [TestMethod] [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void NewtonSoftDependencyWithDisableAppdomainTest(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DiscoveryTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DiscoveryTests.cs index 23d047a76f..81f4687965 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DiscoveryTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DiscoveryTests.cs @@ -18,7 +18,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class DiscoveryTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverAllTests(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -31,7 +31,7 @@ public void DiscoverAllTests(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] [TestCategory("Smoke")] public void MultipleSourcesDiscoverAllTests(RunnerInfo runnerInfo) { @@ -53,7 +53,7 @@ public void MultipleSourcesDiscoverAllTests(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverFullyQualifiedTests(RunnerInfo runnerInfo) { var dummyFilePath = Path.Combine(TempDirectory.Path, $"{Guid.NewGuid()}.txt"); @@ -71,7 +71,7 @@ public void DiscoverFullyQualifiedTests(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestsShouldShowProperWarningIfNoTestsOnTestCaseFilter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -115,7 +115,7 @@ public void TypesToLoadAttributeTests() } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestsShouldSucceedWhenAtLeastOneDllFindsRuntimeProvider(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestMSBuildOutputTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestMSBuildOutputTests.cs index 7602917081..103ed4eac4 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestMSBuildOutputTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestMSBuildOutputTests.cs @@ -18,7 +18,7 @@ public class DotnetTestMSBuildOutputTests : AcceptanceTestBase [TestMethod] // Special characters (~, !, |, %) don't survive the MSBuildLogger output round-trip on non-Windows terminals. [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void MSBuildLoggerCanBeEnabledByBuildPropertyAndDoesNotEatSpecialChars(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -54,7 +54,7 @@ public void MSBuildLoggerCanBeEnabledByBuildPropertyAndDoesNotEatSpecialChars(Ru } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void MSBuildLoggerCanBeDisabledByBuildProperty(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -72,7 +72,7 @@ public void MSBuildLoggerCanBeDisabledByBuildProperty(RunnerInfo runnerInfo) [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void MSBuildLoggerCanBeDisabledByEnvironmentVariableProperty(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestTests.cs index d833cad647..005fa0e3c3 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/DotnetTestTests.cs @@ -18,7 +18,7 @@ private static string GetFinalVersion(string version) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] [TestCategory("Smoke")] public void RunDotnetTestWithCsproj(RunnerInfo runnerInfo) { @@ -34,7 +34,7 @@ public void RunDotnetTestWithCsproj(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunDotnetTestWithDll(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -49,7 +49,7 @@ public void RunDotnetTestWithDll(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunDotnetTestWithCsprojPassInlineSettings(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -64,7 +64,7 @@ public void RunDotnetTestWithCsprojPassInlineSettings(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunDotnetTestWithDllPassInlineSettings(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -77,7 +77,7 @@ public void RunDotnetTestWithDllPassInlineSettings(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] [Ignore("TODO: This scenario is broken in real environment as well (running with shipped `dotnet test`. Old tests (before arcade) use location of vstest.console that have more dlls in place than what we ship, and they make it work.")] public void RunDotnetTestWithNativeDll(RunnerInfo runnerInfo) { @@ -93,7 +93,7 @@ public void RunDotnetTestWithNativeDll(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunDotnetTestAndSeeOutputFromConsoleWriteLine(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/EventLogCollectorTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/EventLogCollectorTests.cs index 4eeb03dcfb..8f0b10c4ca 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/EventLogCollectorTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/EventLogCollectorTests.cs @@ -20,7 +20,7 @@ public class EventLogCollectorTests : AcceptanceTestBase [Ignore] [TestMethod] [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void EventLogDataCollectorShoudCreateLogFileHavingEvents(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -41,7 +41,7 @@ public void EventLogDataCollectorShoudCreateLogFileHavingEvents(RunnerInfo runne [TestMethod] [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void EventLogDataCollectorShoudCreateLogFileWithoutEventsIfEventsAreNotLogged(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionTests.cs index 920a1c7f9b..41b8daa30a 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionTests.cs @@ -19,7 +19,7 @@ public class ExecutionTests : AcceptanceTestBase [TestMethod] // Compatibility matrix includes the .NET Framework runner/testhost, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [MSTestCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.Adapter)] public void RunMultipleTestAssemblies(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -37,7 +37,7 @@ public void RunMultipleTestAssemblies(RunnerInfo runnerInfo) [TestMethod] // Compatibility matrix includes the .NET Framework runner/testhost, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [TestHostCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.TestHost)] public void RunMultipleMSTestAssembliesOnVstestConsoleAndTesthostCombinations(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -55,7 +55,7 @@ public void RunMultipleMSTestAssembliesOnVstestConsoleAndTesthostCombinations(Ru [TestMethod] // Compatibility matrix includes the .NET Framework runner/testhost, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [RunnerCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.VSTestConsole)] public void RunMultipleMSTestAssembliesOnVstestConsoleAndTesthostCombinations2(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -70,7 +70,7 @@ public void RunMultipleMSTestAssembliesOnVstestConsoleAndTesthostCombinations2(R [TestMethod] [TestCategory("Smoke")] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunMultipleMSTestAssembliesOnVstestConsoleAndTesthostCombinations3(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -87,7 +87,7 @@ public void RunMultipleMSTestAssembliesOnVstestConsoleAndTesthostCombinations3(R // the two respective versions together (e.g. latest xunit and latest mstest), but does using two different test // frameworks have any added value over using 2 mstest dlls? [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunMultipleTestAssembliesWithoutTestAdapterPath(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -106,7 +106,7 @@ public void RunMultipleTestAssembliesWithoutTestAdapterPath(RunnerInfo runnerInf // and after --arch feature implementation we won't find correct muxer on CI. [TestCategory("Windows")] [TestMethod] - [MSTestCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.Adapter)] public void RunMultipleTestAssembliesInParallel(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -133,7 +133,7 @@ public void RunMultipleTestAssembliesInParallel(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TestSessionTimeOutTests(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -154,7 +154,7 @@ public void TestSessionTimeOutTests(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void WorkingDirectoryIsSourceDirectory(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -173,8 +173,8 @@ public void WorkingDirectoryIsSourceDirectory(RunnerInfo runnerInfo) // Asserts the testhost-specific stack overflow message; the .NET Framework variant requires the // .NET Framework testhost, which is only available on Windows. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void StackOverflowExceptionShouldBeLoggedToConsoleAndDiagLogFile(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -201,8 +201,8 @@ public void StackOverflowExceptionShouldBeLoggedToConsoleAndDiagLogFile(RunnerIn // Asserts the testhost-specific unhandled exception message; the .NET Framework variant requires the // .NET Framework testhost, which is only available on Windows. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void UnhandleExceptionExceptionShouldBeLoggedToDiagLogFile(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -224,7 +224,7 @@ public void UnhandleExceptionExceptionShouldBeLoggedToDiagLogFile(RunnerInfo run [TestMethod] [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void IncompatibleSourcesWarningShouldBeDisplayedInTheConsoleWhenGivenIncompatibleX86andX64Dll(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -246,7 +246,7 @@ public void IncompatibleSourcesWarningShouldBeDisplayedInTheConsoleWhenGivenInco [TestMethod] [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void NoIncompatibleSourcesWarningShouldBeDisplayedInTheConsoleWhenGivenSingleX86Dll(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -266,7 +266,7 @@ public void NoIncompatibleSourcesWarningShouldBeDisplayedInTheConsoleWhenGivenSi [TestMethod] [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void IncompatibleSourcesWarningShouldBeDisplayedInTheConsoleOnlyWhenRunningIn32BitOS(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -295,7 +295,7 @@ public void IncompatibleSourcesWarningShouldBeDisplayedInTheConsoleOnlyWhenRunni } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExitCodeShouldReturnOneWhenTreatNoTestsAsErrorParameterSetToTrueAndNoTestMatchesFilter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -314,7 +314,7 @@ public void ExitCodeShouldReturnOneWhenTreatNoTestsAsErrorParameterSetToTrueAndN } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExitCodeShouldReturnZeroWhenTreatNoTestsAsErrorParameterSetToFalseAndNoTestMatchesFilter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -333,7 +333,7 @@ public void ExitCodeShouldReturnZeroWhenTreatNoTestsAsErrorParameterSetToFalseAn [TestMethod] [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void ExitCodeShouldNotDependOnTreatNoTestsAsErrorTrueValueWhenThereAreAnyTestsToRun(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -351,7 +351,7 @@ public void ExitCodeShouldNotDependOnTreatNoTestsAsErrorTrueValueWhenThereAreAny [TestMethod] [TestCategory("Windows")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void ExitCodeShouldNotDependOnFailTreatNoTestsAsErrorFalseValueWhenThereAreAnyTestsToRun(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -367,7 +367,7 @@ public void ExitCodeShouldNotDependOnFailTreatNoTestsAsErrorFalseValueWhenThereA } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExecuteTestsShouldSucceedWhenAtLeastOneDllFindsRuntimeProvider(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -389,7 +389,7 @@ public void ExecuteTestsShouldSucceedWhenAtLeastOneDllFindsRuntimeProvider(Runne [TestMethod] // This is a built-in assembly filter test. It changes with vstest.version, so testing against 1 version of console is enough. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunXunitTestsWhenProvidingAllDllsInBin(RunnerInfo runnerInfo) { // This is the default filter of AzDo VSTest task: @@ -414,7 +414,7 @@ public void RunXunitTestsWhenProvidingAllDllsInBin(RunnerInfo runnerInfo) [TestMethod] // This is a built-in assembly filter test. It changes with vstest.version, so testing against 1 version of console is enough. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunMstestTestsWhenProvidingAllDllsInBin(RunnerInfo runnerInfo) { // This is the default filter of AzDo VSTest task: @@ -440,7 +440,7 @@ public void RunMstestTestsWhenProvidingAllDllsInBin(RunnerInfo runnerInfo) [TestMethod] // This is a built-in assembly filter test. It changes with vstest.version, so testing against 1 version of console is enough. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunNunitTestsWhenProvidingAllDllsInBin(RunnerInfo runnerInfo) { // This is the default filter of AzDo VSTest task: @@ -465,7 +465,7 @@ public void RunNunitTestsWhenProvidingAllDllsInBin(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunTestsWhenProvidingJustPlatformDllsFailsTheRun(RunnerInfo runnerInfo) { // This is the default filter of AzDo VSTest task: diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionThreadApartmentStateTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionThreadApartmentStateTests.cs index 05163ddd73..f0550ba485 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionThreadApartmentStateTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ExecutionThreadApartmentStateTests.cs @@ -11,7 +11,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class ExecutionThreadApartmentStateTests : AcceptanceTestBase { [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] + [TestMatrix(testHost: NetFx, inProcess: true)] public void UITestShouldPassIfApartmentStateIsSTA(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -24,7 +24,7 @@ public void UITestShouldPassIfApartmentStateIsSTA(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void WarningShouldBeShownWhenValueIsSTAForNetCore(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -39,7 +39,7 @@ public void WarningShouldBeShownWhenValueIsSTAForNetCore(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] + [TestMatrix(testHost: NetFx, inProcess: true)] public void UITestShouldFailWhenDefaultApartmentStateIsMTA(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -54,7 +54,7 @@ public void UITestShouldFailWhenDefaultApartmentStateIsMTA(RunnerInfo runnerInfo [Ignore(@"Issue with TestSessionTimeout: https://github.com/Microsoft/vstest/issues/980")] [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: true, inProcess: true)] + [TestMatrix(testHost: NetFx, inProcess: true)] public void CancelTestExectionShouldWorkWhenApartmentStateIsSTA(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FilePatternParserTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FilePatternParserTests.cs index 4365382eb3..509773212c 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FilePatternParserTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FilePatternParserTests.cs @@ -12,7 +12,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class FilePatternParserTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void WildCardPatternShouldCorrectlyWorkOnFiles(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -31,7 +31,7 @@ public void WildCardPatternShouldCorrectlyWorkOnFiles(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void WildCardPatternShouldCorrectlyWorkOnArbitraryDepthDirectories(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -56,7 +56,7 @@ public void WildCardPatternShouldCorrectlyWorkOnArbitraryDepthDirectories(Runner } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void WildCardPatternShouldCorrectlyWorkForRelativeAssemblyPath(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -81,7 +81,7 @@ public void WildCardPatternShouldCorrectlyWorkForRelativeAssemblyPath(RunnerInfo } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void WildCardPatternShouldCorrectlyWorkOnMultipleFiles(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FrameworkTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FrameworkTests.cs index 24a4da4add..e470bb6a26 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FrameworkTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/FrameworkTests.cs @@ -13,7 +13,7 @@ public class FrameworkTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void FrameworkArgumentShouldWork(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -26,7 +26,7 @@ public void FrameworkArgumentShouldWork(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void FrameworkShortNameArgumentShouldWork(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -41,8 +41,8 @@ public void FrameworkShortNameArgumentShouldWork(RunnerInfo runnerInfo) [TestMethod] // framework runner not available on Linux [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] - //[NetCoreTargetFrameworkDataSource] + [TestMatrix(console: NetFx, testHost: NetFx)] + //[TestMatrix(testHost: Net)] public void OnWrongFrameworkPassedTestRunShouldNotRun(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -65,8 +65,8 @@ public void OnWrongFrameworkPassedTestRunShouldNotRun(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] // The .NET (Core) runner produces a different framework-incompatible warning on non-Windows, so keep this Windows-only. [TestCategory("Windows-Review")] public void RunSpecificTestsShouldWorkWithFrameworkInCompatibleWarning(RunnerInfo runnerInfo) diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/GlobalUsings.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/GlobalUsings.cs new file mode 100644 index 0000000000..6e5cf8264e --- /dev/null +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/GlobalUsings.cs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +// Brings the Target enum members (Both, NetFx, Net) into scope unqualified so [TestMatrix] call sites +// read as e.g. [TestMatrix(console: NetFx, testHost: Net)]. The console:/testHost: parameter names +// disambiguate which axis each value applies to. +global using static Microsoft.TestPlatform.TestUtilities.Target; diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ListExtensionsTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ListExtensionsTests.cs index 10b445b904..cf027268cb 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ListExtensionsTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ListExtensionsTests.cs @@ -12,7 +12,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class ListExtensionsTests : AcceptanceTestBase { [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] + [TestMatrix(testHost: NetFx, inIsolation: false, inProcess: true)] public void ListDiscoverersShouldShowInboxDiscoverers(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -33,7 +33,7 @@ public void ListDiscoverersShouldShowInboxDiscoverers(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] + [TestMatrix(testHost: NetFx, inIsolation: false, inProcess: true)] public void ListExecutorsShouldShowInboxExecutors(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -56,7 +56,7 @@ public void ListExecutorsShouldShowInboxExecutors(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] + [TestMatrix(testHost: NetFx, inIsolation: false, inProcess: true)] public void ListLoggersShouldShowInboxLoggers(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -68,7 +68,7 @@ public void ListLoggersShouldShowInboxLoggers(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource(inIsolation: false, inProcess: true)] + [TestMatrix(testHost: NetFx, inIsolation: false, inProcess: true)] public void ListSettingsProvidersShouldShowInboxSettingsProviders(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/LoggerTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/LoggerTests.cs index 86717def09..a26da60d03 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/LoggerTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/LoggerTests.cs @@ -16,7 +16,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class LoggerTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerWithFriendlyNameShouldProperlyOverwriteFile(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -36,7 +36,7 @@ public void TrxLoggerWithFriendlyNameShouldProperlyOverwriteFile(RunnerInfo runn } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void HtmlLoggerWithFriendlyNameShouldProperlyOverwriteFile(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -56,7 +56,7 @@ public void HtmlLoggerWithFriendlyNameShouldProperlyOverwriteFile(RunnerInfo run } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void HtmlLoggerWithFriendlyNameContainsExpectedContent(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -83,7 +83,7 @@ private static XmlDocument LoadReport(string htmlLogFilePath) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerWithExecutorUriShouldProperlyOverwriteFile(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -103,7 +103,7 @@ public void TrxLoggerWithExecutorUriShouldProperlyOverwriteFile(RunnerInfo runne } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerWithLogFilePrefixShouldGenerateMultipleTrx(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -123,7 +123,7 @@ public void TrxLoggerWithLogFilePrefixShouldGenerateMultipleTrx(RunnerInfo runne } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void HtmlLoggerWithExecutorUriShouldProperlyOverwriteFile(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -143,7 +143,7 @@ public void HtmlLoggerWithExecutorUriShouldProperlyOverwriteFile(RunnerInfo runn } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerResultSummaryOutcomeValueShouldBeFailedIfNoTestsExecutedAndTreatNoTestsAsErrorIsTrue(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -165,7 +165,7 @@ public void TrxLoggerResultSummaryOutcomeValueShouldBeFailedIfNoTestsExecutedAnd } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerResultSummaryOutcomeValueShouldNotChangeIfNoTestsExecutedAndTreatNoTestsAsErrorIsFalse(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -187,7 +187,7 @@ public void TrxLoggerResultSummaryOutcomeValueShouldNotChangeIfNoTestsExecutedAn } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerResultSummaryOutcomeValueShouldBeFailedWhenDataCollectorLogsError(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -215,7 +215,7 @@ public void TrxLoggerResultSummaryOutcomeValueShouldBeFailedWhenDataCollectorLog } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerResultSummaryOutcomeValueShouldBeCompletedWhenDataCollectorLogsErrorAndTreatErrorMessagesAsWarningsIsTrue(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -307,7 +307,7 @@ private static void IsFileAndContentEqual(string filePath) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerShouldNotDoubleCountDataDrivenTestResults(RunnerInfo runnerInfo) { // Regression test for https://github.com/microsoft/vstest/issues/15643 @@ -338,7 +338,7 @@ public void TrxLoggerShouldNotDoubleCountDataDrivenTestResults(RunnerInfo runner } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxLoggerShouldPlaceTrxFileInSubdirectoryWhenLogFileNameContainsPath(RunnerInfo runnerInfo) { // Regression test for https://github.com/microsoft/vstest/issues/15271 diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MissingTestSdkTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MissingTestSdkTests.cs index 1cd06e6b33..01b28a48ae 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MissingTestSdkTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MissingTestSdkTests.cs @@ -19,7 +19,7 @@ public class MissingTestSdkTests : AcceptanceTestBase // silently run on the built-in testhost shipped next to the runner (that fallback is for native C++ runners) - the // run should fail and tell the user to reference Microsoft.NET.Test.Sdk. [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false, useCoreRunner: true)] + [TestMatrix(console: Net, testHost: Net)] public void RunningManagedProjectWithoutTestSdkShouldFailAndSuggestTestSdk(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -42,7 +42,7 @@ public void RunningManagedProjectWithoutTestSdkShouldFailAndSuggestTestSdk(Runne // build C++ locally. Windows-only (the asset is a Windows native dll). [TestMethod] [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false, useCoreRunner: true)] + [TestMatrix(console: Net, testHost: Net)] public void RunningNativeCppProjectWithoutTestSdkShouldUseTheBuiltInTesthostFallback(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MultitargetingTestHostTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MultitargetingTestHostTests.cs index 163238e783..3cb9cf66ac 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MultitargetingTestHostTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/MultitargetingTestHostTests.cs @@ -17,8 +17,8 @@ public class MultitargetingTestHostTests : AcceptanceTestBase [TestCategory("Windows-Review")] // the underlying test is using xUnit to avoid AppDomain enhancements in MSTest that make this pass even without multitargetting // xUnit supports net452 onwards, so that is why this starts at net452, I also don't test all framework versions - [NetCoreRunner(NETFX)] - [NetFrameworkRunner(NETFX)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: NetFx, testHost: NetFx)] public void TestRunInATesthostThatTargetsTheirChosenNETFramework(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PlatformTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PlatformTests.cs index e9a5eb2dad..84fe0551d2 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PlatformTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PlatformTests.cs @@ -15,8 +15,8 @@ public class PlatformTests : AcceptanceTestBase /// The run test execution with platform x64. /// [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void RunTestExecutionWithPlatformx64(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -29,8 +29,8 @@ public void RunTestExecutionWithPlatformx64(RunnerInfo runnerInfo) /// The run test execution with platform x86. /// [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void RunTestExecutionWithPlatformx86(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PortableNugetPackageTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PortableNugetPackageTests.cs index 1b42e0b8f0..862eed16ac 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PortableNugetPackageTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/PortableNugetPackageTests.cs @@ -24,7 +24,7 @@ public static void ClassInit(TestContext _) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunMultipleTestAssemblies(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -38,7 +38,7 @@ public void RunMultipleTestAssemblies(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverAllTests(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ProcessesInteractionTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ProcessesInteractionTests.cs index 9fe2537ebe..6f1034fec7 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ProcessesInteractionTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ProcessesInteractionTests.cs @@ -17,7 +17,7 @@ public class ProcessesInteractionTests : AcceptanceTestBase /// flush its output and error streams).See https://github.com/microsoft/vstest/issues/3375 /// [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void WhenTestHostProcessExitsBecauseTheTargetedRuntimeIsNoFoundThenTheMessageIsCapturedFromTheErrorOutput(RunnerInfo runnerInfo) { // Arrange diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RecursiveResourcesLookupTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RecursiveResourcesLookupTests.cs index 6bdf038ef8..f6e2736c1b 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RecursiveResourcesLookupTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RecursiveResourcesLookupTests.cs @@ -14,7 +14,7 @@ public class RecursiveResourcesLookupTests : AcceptanceTestBase // two different runners. The NetFull data source is empty on Linux/macOS. [TestCategory("Windows-Review")] [Ignore("Temporarily ignore until solving https://github.com/microsoft/testfx/issues/2692")] - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] + [TestMatrix(console: NetFx, testHost: NetFx)] public void RunsToCompletionWhenJapaneseResourcesAreLookedUpForMSCorLib(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ResultsDirectoryTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ResultsDirectoryTests.cs index 76e6937772..d6e5c5d5cf 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ResultsDirectoryTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ResultsDirectoryTests.cs @@ -13,7 +13,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class ResultsDirectoryTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TrxFileShouldBeCreatedInResultsDirectory(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -33,7 +33,7 @@ public void TrxFileShouldBeCreatedInResultsDirectory(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ResultsDirectoryRelativePathShouldWork(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RunsettingsTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RunsettingsTests.cs index 2816b7e9b4..0930dddc81 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RunsettingsTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/RunsettingsTests.cs @@ -20,8 +20,8 @@ public class RunsettingsTests : AcceptanceTestBase /// Command line run settings should have high precedence among settings file, cli runsettings and cli switches /// [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void CommandLineRunSettingsShouldWinAmongAllOptions(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -60,8 +60,8 @@ public void CommandLineRunSettingsShouldWinAmongAllOptions(RunnerInfo runnerInfo /// Command line run settings should have high precedence between cli runsettings and cli switches. /// [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void CLIRunsettingsShouldWinBetweenCLISwitchesAndCLIRunsettings(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -94,8 +94,8 @@ public void CLIRunsettingsShouldWinBetweenCLISwitchesAndCLIRunsettings(RunnerInf /// Command line switches should have high precedence if runsetting file and command line switch specified /// [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void CommandLineSwitchesShouldWinBetweenSettingsFileAndCommandLineSwitches(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -123,8 +123,8 @@ public void CommandLineSwitchesShouldWinBetweenSettingsFileAndCommandLineSwitche #endregion [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void RunSettingsWithoutParallelAndPlatformX86(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -148,8 +148,8 @@ public void RunSettingsWithoutParallelAndPlatformX86(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void RunSettingsParamsAsArguments(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -175,8 +175,8 @@ public void RunSettingsParamsAsArguments(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void RunSettingsAndRunSettingsParamsAsArguments(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -210,8 +210,8 @@ public void RunSettingsAndRunSettingsParamsAsArguments(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void RunSettingsWithParallelAndPlatformX64(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -231,8 +231,8 @@ public void RunSettingsWithParallelAndPlatformX64(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSourceAttribute(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx, inProcess: true)] + [TestMatrix(testHost: Net)] public void RunSettingsWithInvalidValueShouldLogError(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -252,8 +252,8 @@ public void RunSettingsWithInvalidValueShouldLogError(RunnerInfo runnerInfo) } [TestMethod] - [NetFullTargetFrameworkDataSourceAttribute(inIsolation: true, inProcess: true)] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx, inProcess: true)] + [TestMatrix(testHost: Net)] public void TestAdapterPathFromRunSettings(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -275,8 +275,8 @@ public void TestAdapterPathFromRunSettings(RunnerInfo runnerInfo) #region RunSettings With EnvironmentVariables Settings Tests [TestMethod] - [NetFullTargetFrameworkDataSource] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] + [TestMatrix(testHost: Net)] public void EnvironmentVariablesSettingsShouldSetEnvironmentVariables(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -313,8 +313,8 @@ public void EnvironmentVariablesSettingsShouldSetEnvironmentVariables(RunnerInfo /// /// [TestMethod] - [NetFullTargetFrameworkDataSourceAttribute(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSourceAttribute(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void RunSettingsAreLoadedFromProject(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SelfContainedAppTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SelfContainedAppTests.cs index b236e6e507..8a6c8fc5ba 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SelfContainedAppTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SelfContainedAppTests.cs @@ -13,7 +13,7 @@ public class SelfContainedAppTests : AcceptanceTestBase { [TestMethod] [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSourceAttribute(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunningApplicationThatIsBuiltAsSelfContainedWillNotFailToFindHostpolicyDll(RunnerInfo runnerInfo) { // when the application is self-contained which is dictated by the RuntimeIdentifier and OutputType project diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializationCompatibilityTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializationCompatibilityTests.cs index 9cb64cea20..f9197a62f6 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializationCompatibilityTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializationCompatibilityTests.cs @@ -40,7 +40,7 @@ public class SerializationCompatibilityTests : AcceptanceTestBase [TestMethod] // Compatibility matrix includes the .NET Framework runner/testhost, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [RunnerCompatibilityDataSource()] + [CompatibilityMatrix(CompatScenario.VSTestConsole)] public void DiscoverTests_LatestRunner_WithOlderTesthosts(RunnerInfo runnerInfo) { #pragma warning disable RS0030 // Do not use banned APIs @@ -76,7 +76,7 @@ public void DiscoverTests_LatestRunner_WithOlderTesthosts(RunnerInfo runnerInfo) [TestMethod] // Compatibility matrix includes the .NET Framework runner/testhost, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [TestHostCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.TestHost)] public void DiscoverTests_OlderRunners_WithLatestTesthost(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -113,7 +113,7 @@ public void DiscoverTests_OlderRunners_WithLatestTesthost(RunnerInfo runnerInfo) [TestMethod] // Compatibility matrix includes the .NET Framework runner/testhost, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [RunnerCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.VSTestConsole)] public void RunTests_LatestRunner_WithOlderTesthosts(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -153,7 +153,7 @@ public void RunTests_LatestRunner_WithOlderTesthosts(RunnerInfo runnerInfo) [TestMethod] // Compatibility matrix includes the .NET Framework runner/testhost, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [TestHostCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.TestHost)] public void RunTests_OlderRunners_WithLatestTesthost(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializerSelectionTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializerSelectionTests.cs index b21d517bd2..9225e6049d 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializerSelectionTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/SerializerSelectionTests.cs @@ -10,7 +10,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class SerializerSelectionTests : AcceptanceTestBase { [TestMethod] - [NetCoreRunner(Core11TargetFramework)] + [TestMatrix(console: Net, testHost: Net)] public void OnNetCoreRunner_ShouldUseSystemTextJson(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -28,7 +28,7 @@ public void OnNetCoreRunner_ShouldUseSystemTextJson(RunnerInfo runnerInfo) // The .NET Framework runner (and its Jsonite serializer) only runs on Windows; the core counterpart // is covered by OnNetCoreRunner_ShouldUseSystemTextJson. [TestCategory("Windows-Review")] - [NetFrameworkRunner(Net481TargetFramework)] + [TestMatrix(console: NetFx, testHost: NetFx)] public void OnNetFrameworkRunner_ShouldUseJsonite(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TelemetryTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TelemetryTests.cs index a972b9a62c..6d27b01f27 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TelemetryTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TelemetryTests.cs @@ -20,7 +20,7 @@ public class TelemetryTests : AcceptanceTestBase private const string LOG_TELEMETRY_PATH = "VSTEST_LOGTELEMETRY_PATH"; [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsShouldPublishMetrics(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -29,7 +29,7 @@ public void RunTestsShouldPublishMetrics(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestsShouldPublishMetrics(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestCaseFilterTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestCaseFilterTests.cs index 32323d9a54..47a974b228 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestCaseFilterTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestCaseFilterTests.cs @@ -10,7 +10,7 @@ namespace Microsoft.TestPlatform.AcceptanceTests; public class TestCaseFilterTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithAndOperatorTrait(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -26,7 +26,7 @@ public void RunSelectedTestsWithAndOperatorTrait(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithCategoryTraitInMixCase(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -42,7 +42,7 @@ public void RunSelectedTestsWithCategoryTraitInMixCase(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithClassNameTrait(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -58,7 +58,7 @@ public void RunSelectedTestsWithClassNameTrait(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithFullyQualifiedNameTrait(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -76,7 +76,7 @@ public void RunSelectedTestsWithFullyQualifiedNameTrait(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithNameTrait(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -92,7 +92,7 @@ public void RunSelectedTestsWithNameTrait(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithOrOperatorTrait(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -108,7 +108,7 @@ public void RunSelectedTestsWithOrOperatorTrait(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithPriorityTrait(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -128,7 +128,7 @@ public void RunSelectedTestsWithPriorityTrait(RunnerInfo runnerInfo) /// this command should provide same results as /TestCaseFilter:"FullyQualifiedName~UnitTest1". /// [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TestCaseFilterShouldWorkIfOnlyPropertyValueGivenInExpression(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -150,7 +150,7 @@ public void TestCaseFilterShouldWorkIfOnlyPropertyValueGivenInExpression(RunnerI [TestCategory("Windows-Review")] // MSTest v1 tests from dlls are only supported in .NET Framework runner, in and outside of VS // via Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] + [TestMatrix(console: NetFx, testHost: NetFx)] public void DiscoverMstestV1TestsWithAndOperatorTrait(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -171,7 +171,7 @@ public void DiscoverMstestV1TestsWithAndOperatorTrait(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithNoneTestCategoryFilterMatchesUncategorizedTests(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -190,7 +190,7 @@ public void RunSelectedTestsWithNoneTestCategoryFilterMatchesUncategorizedTests( } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithNoneTestCategoryNotEqualFilterMatchesCategorizedTests(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestPlatformNugetPackageTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestPlatformNugetPackageTests.cs index 498e515642..4e7c2d979a 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestPlatformNugetPackageTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/TestPlatformNugetPackageTests.cs @@ -22,8 +22,8 @@ public static void ClassInit(TestContext _) [TestMethod] [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSourceAttribute(useCoreRunner: false)] - [NetCoreTargetFrameworkDataSourceAttribute(useCoreRunner: false)] + [TestMatrix(console: NetFx, testHost: NetFx)] + [TestMatrix(console: NetFx, testHost: Net)] public void RunMultipleTestAssembliesWithCodeCoverage(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/VideoRecorderTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/VideoRecorderTests.cs index e738e84c5d..41cfe5ed29 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/VideoRecorderTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/VideoRecorderTests.cs @@ -15,7 +15,7 @@ public class VideoRecorderTests : AcceptanceTestBase { [Ignore("Video recording is flaky in CI — screen recorder fails to establish communication. See #15586.")] [TestMethod] - [NetFullTargetFrameworkDataSource(useCoreRunner: false, useVsixRunner: true)] + [TestMatrix(console: NetFx, testHost: NetFx, vsix: true)] public void VideoRecorderDataCollectorShouldRecordVideoWithRunSettings(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/AppDomainTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/AppDomainTests.cs index f0b67c9b96..3ed6ac900a 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/AppDomainTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/AppDomainTests.cs @@ -22,7 +22,7 @@ public class AppDomainTests : AcceptanceTestBase [TestMethod] [TestCategory("Windows-Review")] // AppDomains are .NET Framework only, run in .NET Framework runner and .NET runner - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void RunTestExecutionWithDisableAppDomain(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/FilterSourceIntegrationTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/FilterSourceIntegrationTests.cs index f7a9c725ac..0a762aad58 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/FilterSourceIntegrationTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/FilterSourceIntegrationTests.cs @@ -16,7 +16,7 @@ namespace Microsoft.TestPlatform.Library.IntegrationTests; public class FilterSourceIntegrationTests : AcceptanceTestBase { [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void FilterSourcePackage_AllTestsPass(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/GlobalUsings.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/GlobalUsings.cs new file mode 100644 index 0000000000..6e5cf8264e --- /dev/null +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/GlobalUsings.cs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +// Brings the Target enum members (Both, NetFx, Net) into scope unqualified so [TestMatrix] call sites +// read as e.g. [TestMatrix(console: NetFx, testHost: Net)]. The console:/testHost: parameter names +// disambiguate which axis each value applies to. +global using static Microsoft.TestPlatform.TestUtilities.Target; diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CodeCoverageTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CodeCoverageTests.cs index 1534d45823..5c0ff04c41 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CodeCoverageTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CodeCoverageTests.cs @@ -49,7 +49,7 @@ public void Cleanup() } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TestRunWithCodeCoverage(RunnerInfo runnerInfo) { // arrange @@ -74,7 +74,7 @@ public void TestRunWithCodeCoverage(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TestRunWithCodeCoverageUsingClrIe(RunnerInfo runnerInfo) { // arrange @@ -99,7 +99,7 @@ public void TestRunWithCodeCoverageUsingClrIe(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void TestRunWithCodeCoverageParallel(RunnerInfo runnerInfo) { // arrange @@ -122,12 +122,12 @@ public void TestRunWithCodeCoverageParallel(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task TestRunWithCodeCoverageAndAttachmentsProcessingWithInvokedDataCollectors(RunnerInfo runnerInfo) => await TestRunWithCodeCoverageAndAttachmentsProcessingInternal(runnerInfo, true); [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task TestRunWithCodeCoverageAndAttachmentsProcessingWithoutInvokedDataCollectors(RunnerInfo runnerInfo) => await TestRunWithCodeCoverageAndAttachmentsProcessingInternal(runnerInfo, false); @@ -186,7 +186,7 @@ await _vstestConsoleWrapper.ProcessTestRunAttachmentsAsync( } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task TestRunWithCodeCoverageAndAttachmentsProcessingNoMetrics(RunnerInfo runnerInfo) { // System.Environment.SetEnvironmentVariable("VSTEST_RUNNER_DEBUG_ATTACHVS", "1"); @@ -239,7 +239,7 @@ public async Task TestRunWithCodeCoverageAndAttachmentsProcessingNoMetrics(Runne } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task TestRunWithCodeCoverageAndAttachmentsProcessingModuleDuplicated(RunnerInfo runnerInfo) { // arrange @@ -296,7 +296,7 @@ public async Task TestRunWithCodeCoverageAndAttachmentsProcessingModuleDuplicate } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task TestRunWithCodeCoverageAndAttachmentsProcessingSameReportFormat(RunnerInfo runnerInfo) { // arrange @@ -359,7 +359,7 @@ public async Task TestRunWithCodeCoverageAndAttachmentsProcessingSameReportForma } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task TestRunWithCodeCoverageAndAttachmentsProcessingDifferentReportFormats(RunnerInfo runnerInfo) { // arrange @@ -422,7 +422,7 @@ public async Task TestRunWithCodeCoverageAndAttachmentsProcessingDifferentReport } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task EndSessionShouldEnsureVstestConsoleProcessDies(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CustomTestHostLauncherTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CustomTestHostLauncherTests.cs index 9a3f86259b..3d9fae9b18 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CustomTestHostLauncherTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/CustomTestHostLauncherTests.cs @@ -37,7 +37,7 @@ public void Cleanup() [TestMethod] // WrapperCompatibilityDataSource includes the .NET Framework runner, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [WrapperCompatibilityDataSource()] + [CompatibilityMatrix(CompatScenario.Wrapper)] public void RunTestsWithCustomTestHostLauncherAttachesToDebuggerUsingTheProvidedLauncher(RunnerInfo runnerInfo) { // Arrange @@ -61,7 +61,7 @@ public void RunTestsWithCustomTestHostLauncherAttachesToDebuggerUsingTheProvided // WrapperCompatibilityDataSource includes the .NET Framework runner, which is not available on Linux/macOS. [TestCategory("Windows-Review")] [TestCategory("Feature")] - [WrapperCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.Wrapper)] public void RunAllTestsWithMixedTFMsWillProvideAdditionalInformationToTheDebugger(RunnerInfo runnerInfo) { // Arrange diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DataCollectorAttachmentProcessor.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DataCollectorAttachmentProcessor.cs index d85cb80977..8ae2849ae3 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DataCollectorAttachmentProcessor.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DataCollectorAttachmentProcessor.cs @@ -44,7 +44,7 @@ public void Cleanup() } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public async Task AttachmentProcessorDataCollector_ExtensionFileNotLocked(RunnerInfo runnerInfo) { // arrange diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs index cd1c7ad13a..35c1c39eee 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DifferentTestFrameworkSimpleTests.cs @@ -39,7 +39,7 @@ public void Cleanup() [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsWithNunitAdapter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -71,7 +71,7 @@ public void RunTestsWithNunitAdapter(RunnerInfo runnerInfo) // The xUnit adapter produces no results on Linux/macOS (diagnostic log shows a NullReferenceException because path is null), // so the run returns an empty sequence and .First() throws. Keep this Windows-only. [TestCategory("Windows-Review")] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsWithXunitAdapter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -107,7 +107,7 @@ public void RunTestsWithXunitAdapter(RunnerInfo runnerInfo) [TestMethod] // TODO: this does not work with netcore testhost, why? [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void RunTestsWithNonDllAdapter(RunnerInfo runnerInfo) { // This used to be test for Chutzpah, but it has long running problem with updating dependencies, diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DiscoverTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DiscoverTests.cs index 190079f3a3..9f826d3b23 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DiscoverTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/DiscoverTests.cs @@ -46,7 +46,7 @@ public void Cleanup() [TestMethod] // WrapperCompatibilityDataSource includes the .NET Framework runner, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [WrapperCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.Wrapper)] public void DiscoverTestsUsingDiscoveryEventHandler1(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -65,7 +65,7 @@ public void DiscoverTestsUsingDiscoveryEventHandler1(RunnerInfo runnerInfo) [TestMethod] // WrapperCompatibilityDataSource includes the .NET Framework runner, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [WrapperCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.Wrapper)] public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedOut(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -88,7 +88,7 @@ public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedOut(RunnerI [TestMethod] [TestCategory("Smoke")] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedIn(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -106,7 +106,7 @@ public void DiscoverTestsUsingDiscoveryEventHandler2AndTelemetryOptedIn(RunnerIn } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestsUsingEventHandler2AndBatchSize(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -135,7 +135,7 @@ public void DiscoverTestsUsingEventHandler2AndBatchSize(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestsUsingEventHandler1AndBatchSize(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -163,7 +163,7 @@ public void DiscoverTestsUsingEventHandler1AndBatchSize(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestUsingEventHandler2ShouldContainAllSourcesAsFullyDiscovered(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -187,8 +187,8 @@ public void DiscoverTestUsingEventHandler2ShouldContainAllSourcesAsFullyDiscover // We run .NET Runner -> .NET Testhost and .NET Framework Runner -> .NET Frameworks Testhost. // The .NET Framework runner/testhost is not available on Linux/macOS. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(useCoreRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: NetFx, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void DiscoverTestsUsingSourceNavigation(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -208,7 +208,7 @@ public void DiscoverTestsUsingSourceNavigation(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] [Ignore("Flaky on CI")] public async Task CancelTestDiscovery(RunnerInfo runnerInfo) { diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/LiveUnitTestingTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/LiveUnitTestingTests.cs index 38e5f2a347..a0989ce895 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/LiveUnitTestingTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/LiveUnitTestingTests.cs @@ -38,7 +38,7 @@ public void Cleanup() [TestMethod] // Touches appdomain settings, preferring .NET Framework testhost here. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void DiscoverTestsUsingLiveUnitTesting(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -64,7 +64,7 @@ public void DiscoverTestsUsingLiveUnitTesting(RunnerInfo runnerInfo) [TestMethod] // Touches appdomain settings, preferring .NET Framework testhost here. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource] + [TestMatrix(testHost: NetFx)] public void RunTestsWithLiveUnitTesting(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunSelectedTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunSelectedTests.cs index 2357b9f7cc..2aeca39584 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunSelectedTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunSelectedTests.cs @@ -37,7 +37,7 @@ public void Cleanup() } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithoutTestPlatformOptions(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -56,7 +56,7 @@ public void RunSelectedTestsWithoutTestPlatformOptions(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunSelectedTestsWithTestPlatformOptions(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTests.cs index 7975ecd58e..b1236c573e 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTests.cs @@ -48,7 +48,7 @@ public void Cleanup() [TestMethod] // WrapperCompatibilityDataSource includes the .NET Framework runner, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [WrapperCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.Wrapper)] public void RunAllTests(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -65,7 +65,7 @@ public void RunAllTests(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] [TestCategory("Smoke")] public void RunAllTestsFromDlls(RunnerInfo runnerInfo) { @@ -85,7 +85,7 @@ public void RunAllTestsFromDlls(RunnerInfo runnerInfo) [TestMethod] // WrapperCompatibilityDataSource includes the .NET Framework runner, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [WrapperCompatibilityDataSource()] + [CompatibilityMatrix(CompatScenario.Wrapper)] public void RunAllTestsWithMixedTFMsWillRunTestsFromAllProvidedDllEvenWhenTheyMixTFMs(RunnerInfo runnerInfo) { // Arrange @@ -110,7 +110,7 @@ public void RunAllTestsWithMixedTFMsWillRunTestsFromAllProvidedDllEvenWhenTheyMi } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void EndSessionShouldEnsureVstestConsoleProcessDies(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -130,7 +130,7 @@ public void EndSessionShouldEnsureVstestConsoleProcessDies(RunnerInfo runnerInfo } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsWithTelemetryOptedIn(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -153,7 +153,7 @@ public void RunTestsWithTelemetryOptedIn(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsWithTelemetryOptedOut(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -175,8 +175,8 @@ public void RunTestsWithTelemetryOptedOut(RunnerInfo runnerInfo) // The assertion below branches on the .NET Framework-specific stack overflow message, and the // .NET Framework testhost is only available on Windows, so this runs as Windows-Review. [TestCategory("Windows-Review")] - [NetFullTargetFrameworkDataSource(useDesktopRunner: false)] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: NetFx)] + [TestMatrix(console: Net, testHost: Net)] public void RunTestsShouldThrowOnStackOverflowException(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -199,7 +199,7 @@ public void RunTestsShouldThrowOnStackOverflowException(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunTestsShouldShowProperWarningOnNoTestsForTestCaseFilter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs index 9ac4c8f513..f67b22870c 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithDifferentConfigurationTests.cs @@ -44,7 +44,7 @@ public void Cleanup() } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsWithTestAdapterPath(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -66,7 +66,7 @@ public void RunTestsWithTestAdapterPath(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsWithRunSettingsWithParallel(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -98,7 +98,7 @@ public void RunTestsWithRunSettingsWithParallel(RunnerInfo runnerInfo) } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void RunTestsWithX64Source(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithFilterTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithFilterTests.cs index 3dc564da17..ee12ba1194 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithFilterTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/RunTestsWithFilterTests.cs @@ -39,7 +39,7 @@ public void Cleanup() [TestMethod] // WrapperCompatibilityDataSource includes the .NET Framework runner, which is not available on Linux/macOS. [TestCategory("Windows-Review")] - [WrapperCompatibilityDataSource] + [CompatibilityMatrix(CompatScenario.Wrapper)] public void RunTestsWithTestCaseFilter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); @@ -62,7 +62,7 @@ public void RunTestsWithTestCaseFilter(RunnerInfo runnerInfo) [TestMethod] // Validates filter expression that is passed all the way down to testhost, unlikely that we will see difference in beharior between desktop and netcore runners. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void RunTestsWithFastFilter(RunnerInfo runnerInfo) { SetTestEnvironment(_testEnvironment, runnerInfo); diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/SerializeTestRunTests.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/SerializeTestRunTests.cs index 87f27d6787..4839215644 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/SerializeTestRunTests.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/SerializeTestRunTests.cs @@ -48,7 +48,7 @@ public void Cleanup() [TestMethod] // This is testhost concept, try it on combination of testhosts, and .NET Runner. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void DiscoverTestsAndRunTestsSequentially(RunnerInfo runnerInfo) { // Arrange @@ -69,7 +69,7 @@ public void DiscoverTestsAndRunTestsSequentially(RunnerInfo runnerInfo) [TestMethod] // This is testhost concept, try it on combination of testhosts, and .NET Runner. - [NetCoreTargetFrameworkDataSource(useDesktopRunner: false)] + [TestMatrix(console: Net, testHost: Net)] public void DiscoverTestsAndRunTestsSequentially_DisabledByFeatureFlag(RunnerInfo runnerInfo) { // Arrange @@ -90,7 +90,7 @@ public void DiscoverTestsAndRunTestsSequentially_DisabledByFeatureFlag(RunnerInf } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void DiscoverTestsAndRunTestsSequentially_IsNotSupportedForSources(RunnerInfo runnerInfo) { // Arrange diff --git a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/TargetFrameworkTestHostDemultiplexer.cs b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/TargetFrameworkTestHostDemultiplexer.cs index c3b2d7d1b9..ef5f6267f0 100644 --- a/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/TargetFrameworkTestHostDemultiplexer.cs +++ b/test/Microsoft.TestPlatform.Library.IntegrationTests/TranslationLayerTests/TargetFrameworkTestHostDemultiplexer.cs @@ -37,17 +37,17 @@ public void Cleanup() } [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExecuteContainerInMultiHost(RunnerInfo runnerInfo) => ExecuteContainerInMultiHost(runnerInfo, 3); [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExecuteContainerInMultiHost_MoreHostsThanTests(RunnerInfo runnerInfo) => ExecuteContainerInMultiHost(runnerInfo, 20); [TestMethod] - [NetCoreTargetFrameworkDataSource] + [TestMatrix(testHost: Net)] public void ExecuteSingleContainerInDefaultSingleHost(RunnerInfo runnerInfo) => ExecuteContainerInMultiHost(runnerInfo, -1); diff --git a/test/Microsoft.TestPlatform.TestUtilities/CompatibilityMatrixAttribute.cs b/test/Microsoft.TestPlatform.TestUtilities/CompatibilityMatrixAttribute.cs new file mode 100644 index 0000000000..65af1f2f12 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/CompatibilityMatrixAttribute.cs @@ -0,0 +1,119 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Reflection; + +namespace Microsoft.TestPlatform.TestUtilities; + +/// +/// Runs the test across a matrix of shipped vstest.console / testhost / MSTest-adapter versions to guard +/// backward compatibility. The component named by the scenario is pinned to the locally-built bits; +/// the other dimensions sweep a range of released versions. Each row is handed to the test as a . +/// Use the optional Before*/After*Feature properties to skip rows whose version predates / postdates a feature. +/// +public sealed class CompatibilityMatrixAttribute : CompatibilityDataSourceAttribute +{ + private readonly CompatibilityRowsBuilder _builder; + private readonly bool _withInProcess; + private readonly bool _withVsixRunner; + + /// + /// Initializes a new instance of the class. + /// + /// Which component's local changes are under test — the others sweep their compatible range. + public CompatibilityMatrixAttribute(CompatScenario scenario) + { + (string runnerVersions, string runnerFrameworks, string hostVersions, string hostFrameworks, string adapterVersions, _withInProcess, _withVsixRunner) = scenario switch + { + // Locally-built vstest.console against the range of shipped testhost versions (adds in-process and VSIX console rows). + CompatScenario.VSTestConsole => ( + AcceptanceTestBase.LATEST, AcceptanceTestBase.RUNNER_NETFX_AND_NET, + AcceptanceTestBase.LATEST_TO_LEGACY, AcceptanceTestBase.HOST_NETFX_AND_NET, + AcceptanceTestBase.LATESTSTABLE, true, true), + + // Locally-built testhost against recent shipped vstest.console versions. + CompatScenario.TestHost => ( + AcceptanceTestBase.LATEST_TO_RECENT_STABLE, AcceptanceTestBase.RUNNER_NETFX_AND_NET, + AcceptanceTestBase.LATEST, AcceptanceTestBase.HOST_NETFX_AND_NET, + AcceptanceTestBase.LATESTSTABLE, false, false), + + // Locally-built VSTestConsoleWrapper against recent shipped vstest.console versions (adds VSIX, .NET testhost only). + CompatScenario.Wrapper => ( + AcceptanceTestBase.LATEST_TO_RECENT_STABLE, AcceptanceTestBase.RUNNER_NETFX_AND_NET, + AcceptanceTestBase.LATEST, AcceptanceTestBase.HOST_NET, + AcceptanceTestBase.LATESTSTABLE, false, true), + + // Locally-built vstest.console + testhost against the range of shipped MSTest adapter versions. + CompatScenario.Adapter => ( + AcceptanceTestBase.LATEST, AcceptanceTestBase.RUNNER_NET, + AcceptanceTestBase.LATEST, AcceptanceTestBase.HOST_NETFX_AND_NET, + AcceptanceTestBase.LATESTPREVIEW_TO_LEGACY, true, true), + + _ => throw new ArgumentOutOfRangeException(nameof(scenario), scenario, null), + }; + + _builder = new CompatibilityRowsBuilder( + runnerVersions, runnerFrameworks, + hostVersions, hostFrameworks, + adapterVersions, AcceptanceTestBase.MSTEST); + + // Do not generate the data rows here, properties (e.g. DebugVSTestConsole) are not populated until after constructor is done. + } + + public bool DebugVSTestConsole { get; set; } + public bool DebugTestHost { get; set; } + public bool DebugDataCollector { get; set; } + public bool DebugStopAtEntrypoint { get; set; } + public int JustRow { get; set; } = -1; + + public string? BeforeVSTestConsoleFeature { get; set; } + public string? AfterVSTestConsoleFeature { get; set; } + + public string? BeforeTestHostFeature { get; set; } + public string? AfterTestHostFeature { get; set; } + + public string? BeforeAdapterFeature { get; set; } + public string? AfterAdapterFeature { get; set; } + + public override void CreateData(MethodInfo methodInfo) + { + _builder.WithInProcess = _withInProcess; + _builder.WithVSIXRunner = _withVsixRunner; + + _builder.BeforeRunnerFeature = BeforeVSTestConsoleFeature; + _builder.AfterRunnerFeature = AfterVSTestConsoleFeature; + + _builder.BeforeTestHostFeature = BeforeTestHostFeature; + _builder.AfterTestHostFeature = AfterTestHostFeature; + + _builder.BeforeAdapterFeature = BeforeAdapterFeature; + _builder.AfterAdapterFeature = AfterAdapterFeature; + + _builder.DebugDataCollector = DebugDataCollector; + _builder.DebugVSTestConsole = DebugVSTestConsole; + _builder.DebugTestHost = DebugTestHost; + _builder.DebugStopAtEntrypoint = DebugStopAtEntrypoint; + + _builder.JustRow = JustRow < 0 ? null : JustRow; + + var data = _builder.CreateData(); + data.ForEach(AddData); + } +} + +/// Picks which component's local changes tests for compatibility. +public enum CompatScenario +{ + /// Locally-built vstest.console against the range of shipped testhost versions (adds in-process and VSIX console rows). + VSTestConsole, + + /// Locally-built testhost against recent shipped vstest.console versions. + TestHost, + + /// Locally-built VSTestConsoleWrapper (translation layer) against recent shipped vstest.console versions (adds VSIX, .NET testhost only). + Wrapper, + + /// Locally-built vstest.console + testhost against the range of shipped MSTest adapter versions. + Adapter, +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/TestMatrixAttribute.cs b/test/Microsoft.TestPlatform.TestUtilities/TestMatrixAttribute.cs new file mode 100644 index 0000000000..4ebee84d32 --- /dev/null +++ b/test/Microsoft.TestPlatform.TestUtilities/TestMatrixAttribute.cs @@ -0,0 +1,170 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Reflection; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.TestPlatform.TestUtilities; + +/// +/// Runs the test once for every cell of the vstest.console × testhost matrix that the current OS supports, +/// using the locally-built bits. Each generated row is handed to the test as a . +/// +/// With no arguments the test runs the full matrix: both consoles — .NET Framework (vstest.console.exe) +/// and .NET (dotnet vstest.console.dll) — against both testhost target frameworks (net481 and net11.0). +/// Pin an axis to narrow it, e.g. [TestMatrix(testHost: Net)] keeps both consoles but only the +/// .NET testhost, and [TestMatrix(console: Net)] keeps both testhosts but only the .NET console. +/// +/// /InIsolation is used only for the .NET Framework console driving a .NET Framework testhost; every other +/// cell runs in its natural mode. On non-Windows the .NET Framework console and net4* testhosts are skipped. +/// +[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] +public sealed class TestMatrixAttribute : Attribute, ITestDataSource +{ + private readonly Target _console; + private readonly Target _testHost; + private readonly bool _inIsolation; + private readonly bool _inProcess; + private readonly bool _vsix; + + /// + /// Initializes a new instance of the class. + /// + /// Which vstest.console to run: both (default), only .NET Framework, or only .NET. + /// Which testhost target framework to run against: both (default), only net481, or only net11.0. + /// Emit the /InIsolation row for the .NET Framework console × .NET Framework testhost cell (default ). Ignored for every other cell. + /// Additionally run the .NET Framework console × .NET Framework testhost cell in-process (without /InIsolation). Ignored for every other cell. + /// Additively run the vstest.console shipped in the Visual Studio VSIX as its own row (a .NET Framework console and testhost), independent of the and axes. Windows-only. + public TestMatrixAttribute( + Target console = Target.Both, + Target testHost = Target.Both, + bool inIsolation = true, + bool inProcess = false, + bool vsix = false) + { + _console = console; + _testHost = testHost; + _inIsolation = inIsolation; + _inProcess = inProcess; + _vsix = vsix; + } + + public bool DebugVSTestConsole { get; set; } + public bool DebugTestHost { get; set; } + public bool DebugDataCollector { get; set; } + public bool DebugStopAtEntrypoint { get; set; } + + public IEnumerable GetData(MethodInfo methodInfo) + { + var dataRows = new List(); + var isWindows = Environment.OSVersion.Platform.ToString().StartsWith("Win"); + + var wantNetFxConsole = _console is Target.Both or Target.NetFx; + var wantNetConsole = _console is Target.Both or Target.Net; + var wantNetFxHost = _testHost is Target.Both or Target.NetFx; + var wantNetHost = _testHost is Target.Both or Target.Net; + + // .NET Framework testhost (net481) is Windows-only in its entirety. Emitted first so that for the + // both-testhost matrix the rows are ordered net481 then net11.0, matching the legacy attributes. + if (wantNetFxHost && isWindows) + { + if (wantNetConsole) + { + AddRow(dataRows, IntegrationTestBase.CoreRunnerFramework, AcceptanceTestBase.DesktopTargetFramework, inIsolationValue: null); + } + + if (wantNetFxConsole) + { + if (_inIsolation) + { + AddRow(dataRows, IntegrationTestBase.DesktopRunnerFramework, AcceptanceTestBase.DesktopTargetFramework, AcceptanceTestBase.InIsolation); + } + + if (_inProcess) + { + AddRow(dataRows, IntegrationTestBase.DesktopRunnerFramework, AcceptanceTestBase.DesktopTargetFramework, inIsolationValue: null); + } + } + } + + // The VSIX console is a .NET Framework console driving a .NET Framework testhost. `vsix: true` is + // additive: it always adds a VSIX run regardless of the console/testHost axes (Windows-only). + if (_vsix && isWindows) + { + AddRow(dataRows, IntegrationTestBase.DesktopRunnerFramework, AcceptanceTestBase.DesktopTargetFramework, inIsolationValue: null, vsixConsole: true); + } + + // .NET testhost (net11.0). + if (wantNetHost) + { + // .NET Framework console driving a .NET testhost is Windows-only; never isolated. + if (wantNetFxConsole && isWindows) + { + AddRow(dataRows, IntegrationTestBase.DesktopRunnerFramework, AcceptanceTestBase.Core11TargetFramework, inIsolationValue: null); + } + + // .NET console driving a .NET testhost runs on every OS. + if (wantNetConsole) + { + AddRow(dataRows, IntegrationTestBase.CoreRunnerFramework, AcceptanceTestBase.Core11TargetFramework, inIsolationValue: null); + } + } + + return dataRows; + } + + public string GetDisplayName(MethodInfo methodInfo, object?[]? data) + { + return string.Format(CultureInfo.CurrentCulture, "{0} ({1})", methodInfo.Name, string.Join(",", data ?? [])); + } + + private void AddRow(List dataRows, string runnerFramework, string targetFramework, string? inIsolationValue, bool vsixConsole = false) + { + var runnerInfo = new RunnerInfo + { + RunnerFramework = runnerFramework, + TargetFramework = targetFramework, + InIsolationValue = inIsolationValue, + DebugInfo = new DebugInfo + { + DebugVSTestConsole = DebugVSTestConsole, + DebugTestHost = DebugTestHost, + DebugDataCollector = DebugDataCollector, + DebugStopAtEntrypoint = DebugStopAtEntrypoint, + }, + }; + + if (vsixConsole) + { + runnerInfo.VSTestConsoleInfo = new VSTestConsoleInfo + { + Version = IntegrationTestEnvironment.LatestLocallyBuiltNugetVersion, + Path = Path.Combine(IntegrationTestEnvironment.PublishDirectory, Path.GetFileName(IntegrationTestEnvironment.LocalVsixInsertion), "vstest.console.exe"), + }; + } + + dataRows.Add([runnerInfo]); + } +} + +/// +/// Selects a runtime family — .NET Framework or .NET — for an axis of . +/// Shared by the console axis (vstest.console.exe vs dotnet vstest.console.dll) and the +/// testHost axis (net481 vs net11.0); the parameter name selects which axis it applies to. +/// +public enum Target +{ + /// Run both the .NET Framework and .NET variants of the axis (default). + Both, + + /// Run only the .NET Framework variant (vstest.console.exe / net481 testhost). + NetFx, + + /// Run only the .NET variant (dotnet vstest.console.dll / net11.0 testhost). + Net, +}