From e4ac5cd051107772b99cf3f275f2718ff20120a4 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Fri, 20 May 2022 18:18:01 -0400 Subject: [PATCH] [wasm] CI build improvements (#69519) - Run all the debugger tests in one helix job, because most of them take a couple of minutes to run. And this would avoid the overhead of individual helix jobs - Add a no-workloads variant for `Wasm.Build.Tests`, instead of `EMSDK` - This replaces the job that used `WasmApp.LocalBuild*` stuff to build with a `EMSDK` checkout. That case already gets tested with library tests. - The `EMSDK` case had been disabled recently due to an Arcade issue - Since we have very few tests to run for the noworkloads case, they are all run in a single helix work item. Fixes https://github.com/dotnet/runtime/issues/58159 Fixes https://github.com/dotnet/runtime/issues/67887 (by completely removing the `EMSDK` run) --- .../common/evaluate-default-paths.yml | 8 ++- .../scenarios/WasmDebuggerTestsJobsList.txt | 20 ------ src/libraries/sendtohelix-wasm.targets | 37 ++++++----- src/libraries/sendtohelix.proj | 4 +- src/mono/wasm/debugger/Directory.Build.props | 6 +- .../BlazorWasmBuildPublishTests.cs | 18 +++--- .../Wasm.Build.Tests/BlazorWasmTests.cs | 20 ++---- .../Wasm.Build.Tests/BuildEnvironment.cs | 38 ++--------- .../Wasm.Build.Tests/BuildTestBase.cs | 4 +- .../Wasm.Build.Tests/CleanTests.cs | 6 +- .../Wasm.Build.Tests/EnvironmentVariables.cs | 2 - .../Wasm.Build.Tests/LocalEMSDKTests.cs | 64 ------------------- .../Wasm.Build.Tests/NativeBuildTests.cs | 2 +- .../Wasm.Build.Tests/NativeLibraryTests.cs | 4 +- .../NoopNativeRebuildTest.cs | 4 +- .../PInvokeTableGeneratorTests.cs | 6 +- .../Wasm.Build.Tests/Wasm.Build.Tests.csproj | 12 +++- .../Wasm.Build.Tests/WasmTemplateTests.cs | 4 +- .../Wasm.Build.Tests/WorkloadTests.cs | 2 +- .../data/Blazor.Local.Directory.Build.props | 12 +--- .../data/Local.Directory.Build.props | 5 -- .../data/Local.Directory.Build.targets | 21 +----- .../data/RunScriptTemplate.cmd | 2 +- .../data/RunScriptTemplate.sh | 5 +- 24 files changed, 82 insertions(+), 224 deletions(-) delete mode 100644 eng/testing/scenarios/WasmDebuggerTestsJobsList.txt delete mode 100644 src/tests/BuildWasmApps/Wasm.Build.Tests/LocalEMSDKTests.cs diff --git a/eng/pipelines/common/evaluate-default-paths.yml b/eng/pipelines/common/evaluate-default-paths.yml index 9d171b672427..9eaf4c45e0a3 100644 --- a/eng/pipelines/common/evaluate-default-paths.yml +++ b/eng/pipelines/common/evaluate-default-paths.yml @@ -106,7 +106,8 @@ jobs: - subset: wasmbuildtests include: - src/tasks/* - - src/tests/BuildWasmApps/* + - src/tests/BuildWasmApps/Directory.Build* + - src/tests/BuildWasmApps/Wasm.Build.Tests/* - src/mono/wasm/build/* - src/mono/wasm/runtime/* - src/mono/wasm/templates/* @@ -122,13 +123,14 @@ jobs: - eng/Version.Details.xml - eng/Versions.props - src/mono/wasm/emscripten-version.txt + - src/libraries/sendtohelix* - subset: wasmdebuggertests include: - src/mono/wasm/debugger/* - src/mono/wasm/runtime/* - - src/tests/BuildWasmApps/* + - src/tests/BuildWasmApps/Directory.Build* + - src/tests/BuildWasmApps/Wasm.Debugger.Tests/* - eng/testing/ProvisioningVersions.props - - eng/testing/scenarios/WasmDebuggerTestsJobsList.txt - src/mono/mono/* - subset: allwasm include: diff --git a/eng/testing/scenarios/WasmDebuggerTestsJobsList.txt b/eng/testing/scenarios/WasmDebuggerTestsJobsList.txt deleted file mode 100644 index c4e1405de7d3..000000000000 --- a/eng/testing/scenarios/WasmDebuggerTestsJobsList.txt +++ /dev/null @@ -1,20 +0,0 @@ -DebuggerTests.ArrayTests -DebuggerTests.AssignmentTests -DebuggerTests.AsyncTests -DebuggerTests.BadHarnessInitTests -DebuggerTests.BreakpointTests -DebuggerTests.CallFunctionOnTests -DebuggerTests.CustomViewTests -DebuggerTests.DateTimeTests -DebuggerTests.DelegateTests -DebuggerTests.EvaluateOnCallFrameTests -DebuggerTests.ExceptionTests -DebuggerTests.GetPropertiesTests -DebuggerTests.HarnessTests -DebuggerTests.HotReloadTests -DebuggerTests.MonoJsTests -DebuggerTests.PointerTests -DebuggerTests.SetVariableValueTests -DebuggerTests.MiscTests -DebuggerTests.SteppingTests -DebuggerTests.SetNextIpTests diff --git a/src/libraries/sendtohelix-wasm.targets b/src/libraries/sendtohelix-wasm.targets index 3486b253e48c..168d97a6afc2 100644 --- a/src/libraries/sendtohelix-wasm.targets +++ b/src/libraries/sendtohelix-wasm.targets @@ -14,7 +14,6 @@ false $(RepositoryEngineeringDir)\testing\scenarios\BuildWasmAppsJobsList.txt - $(RepositoryEngineeringDir)\testing\scenarios\WasmDebuggerTestsJobsList.txt $(RepoRoot)src\mono\wasm\emsdk\ @@ -23,7 +22,7 @@ chrome true - true + true true true true @@ -83,6 +82,15 @@ + + <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' == 'true'">-notrait category=no-workload + <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' != 'true'">-trait category=no-workload + + + + + + @@ -191,24 +196,26 @@ + - + $(_BuildWasmAppsPayloadArchive) set "HELIX_XUNIT_ARGS=-class %(Identity)" export "HELIX_XUNIT_ARGS=-class %(Identity)" $(HelixCommand) $(_workItemTimeout) + + + $(_BuildWasmAppsPayloadArchive) + $(HelixCommand) + $(_workItemTimeout) + - + $(_WasmDebuggerTestsPayloadArchive) - - - set TEST_ARGS=--filter "FullyQualifiedName~%(Identity)&Category^!=windows-failing&Category^!=failing" - export TEST_ARGS="--filter FullyQualifiedName~%(Identity)&Category!=linux-failing&Category!=failing" - $(HelixCommand) $(_workItemTimeout) diff --git a/src/libraries/sendtohelix.proj b/src/libraries/sendtohelix.proj index ff512c1b1c03..60de339e3402 100644 --- a/src/libraries/sendtohelix.proj +++ b/src/libraries/sendtohelix.proj @@ -79,9 +79,7 @@ - - - <_TestUsingWorkloadsValues Include="true" /> + <_TestUsingWorkloadsValues Include="true;false" /> <_BuildWasmAppsProjectsToBuild Include="$(PerScenarioProjectFile)"> $(_PropertiesToPass);Scenario=BuildWasmApps;TestArchiveRuntimeFile=$(TestArchiveRuntimeFile);TestUsingWorkloads=%(_TestUsingWorkloadsValues.Identity) diff --git a/src/mono/wasm/debugger/Directory.Build.props b/src/mono/wasm/debugger/Directory.Build.props index c9cccf897a6b..262662e3a621 100644 --- a/src/mono/wasm/debugger/Directory.Build.props +++ b/src/mono/wasm/debugger/Directory.Build.props @@ -1,6 +1,6 @@ - - Release - + + Release + diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmBuildPublishTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmBuildPublishTests.cs index e550fa8bd8d9..60ae583f76d8 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmBuildPublishTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmBuildPublishTests.cs @@ -21,7 +21,7 @@ public BlazorWasmBuildPublishTests(ITestOutputHelper output, SharedBuildPerTestC _enablePerTestCleanup = true; } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsNotUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void DefaultTemplate_WithoutWorkload(string config) @@ -38,7 +38,7 @@ public void DefaultTemplate_WithoutWorkload(string config) AssertBlazorBootJson(config, isPublish: true); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void DefaultTemplate_NoAOT_WithWorkload(string config) @@ -58,7 +58,7 @@ public void DefaultTemplate_NoAOT_WithWorkload(string config) } } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void DefaultTemplate_AOT_InProjectFile(string config) @@ -77,7 +77,7 @@ public void DefaultTemplate_AOT_InProjectFile(string config) BlazorBuild(new BlazorBuildOptions(id, config, NativeFilesType.FromRuntimePack)); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug", true)] [InlineData("Debug", false)] [InlineData("Release", true)] @@ -121,7 +121,7 @@ public void NativeBuild_WithDeployOnBuild_UsedByVS(string config, bool nativeRel // Disabling for now - publish folder can have more than one dotnet*hash*js, and not sure // how to pick which one to check, for the test - //[ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + //[Theory] //[InlineData("Debug")] //[InlineData("Release")] //public void DefaultTemplate_AOT_OnlyWithPublishCommandLine_Then_PublishNoAOT(string config) @@ -140,7 +140,7 @@ public void NativeBuild_WithDeployOnBuild_UsedByVS(string config, bool nativeRel //BlazorPublish(new BlazorBuildOptions(id, config, NativeFilesType.Relinked); //} - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void WithNativeReference_AOTInProjectFile(string config) @@ -157,7 +157,7 @@ public void WithNativeReference_AOTInProjectFile(string config) BlazorBuild(new BlazorBuildOptions(id, config, NativeFilesType.Relinked)); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void WithNativeReference_AOTOnCommandLine(string config) @@ -173,7 +173,7 @@ public void WithNativeReference_AOTOnCommandLine(string config) BlazorPublish(new BlazorBuildOptions(id, config, NativeFilesType.Relinked)); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void WithDllImportInMainAssembly(string config) @@ -227,7 +227,7 @@ void CheckNativeFileLinked(bool forPublish) } } - [ConditionalFact(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Fact] public void BugRegression_60479_WithRazorClassLib() { string id = "blz_razor_lib_top"; diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmTests.cs index 72419f66006e..1641c7860d5b 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmTests.cs @@ -16,19 +16,17 @@ public BlazorWasmTests(ITestOutputHelper output, SharedBuildPerTestClassFixture { } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsNotUsingWorkloads))] + [Theory, TestCategory("no-workload")] [InlineData("Debug")] [InlineData("Release")] public void NativeRef_EmitsWarningBecauseItRequiresWorkload(string config) { CommandResult res = PublishForRequiresWorkloadTest(config, extraItems: ""); res.EnsureSuccessful(); - AssertBlazorBundle(config, isPublish: true, dotnetWasmFromRuntimePack: true); - - Assert.Contains("but the native references won't be linked in", res.Output); + Assert.Matches("warning : .*but the native references won't be linked in", res.Output); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsNotUsingWorkloads))] + [Theory, TestCategory("no-workload")] [InlineData("Debug")] [InlineData("Release")] public void AOT_FailsBecauseItRequiresWorkload(string config) @@ -38,7 +36,7 @@ public void AOT_FailsBecauseItRequiresWorkload(string config) Assert.Contains("following workloads must be installed: wasm-tools", res.Output); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsNotUsingWorkloads))] + [Theory, TestCategory("no-workload")] [InlineData("Debug")] [InlineData("Release")] public void AOT_And_NativeRef_FailBecauseTheyRequireWorkload(string config) @@ -56,13 +54,6 @@ private CommandResult PublishForRequiresWorkloadTest(string config, string extra string id = $"needs_workload_{config}_{Path.GetRandomFileName()}"; CreateBlazorWasmTemplateProject(id); - if (IsNotUsingWorkloads) - { - // no packs installed, so no need to update the paths for runtime pack etc - File.Copy(Path.Combine(BuildEnvironment.TestDataPath, "Blazor.Local.Directory.Build.props"), Path.Combine(_projectDir!, "Directory.Build.props"), overwrite: true); - File.Copy(Path.Combine(BuildEnvironment.TestDataPath, "Blazor.Local.Directory.Build.targets"), Path.Combine(_projectDir!, "Directory.Build.targets"), overwrite: true); - } - AddItemsPropertiesToProject(Path.Combine(_projectDir!, $"{id}.csproj"), extraProperties: extraProperties, extraItems: extraItems); @@ -72,8 +63,7 @@ private CommandResult PublishForRequiresWorkloadTest(string config, string extra .WithWorkingDirectory(_projectDir!) .ExecuteWithCapturedOutput("publish", $"-bl:{publishLogPath}", - $"-p:Configuration={config}", - "-p:MSBuildEnableWorkloadResolver=true"); // WasmApp.LocalBuild.* disables this, but it is needed for this test + $"-p:Configuration={config}"); } [Theory] diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs index afbf3250e85e..2db7094b0095 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs @@ -27,8 +27,6 @@ public class BuildEnvironment public static readonly string TestAssetsPath = Path.Combine(AppContext.BaseDirectory, "testassets"); public static readonly string TestDataPath = Path.Combine(AppContext.BaseDirectory, "data"); - private static string s_runtimeConfig = "Release"; - public BuildEnvironment() { DirectoryInfo? solutionRoot = new (AppContext.BaseDirectory); @@ -59,6 +57,7 @@ public BuildEnvironment() if (!Directory.Exists(sdkForWorkloadPath)) throw new Exception($"Could not find SDK_FOR_WORKLOAD_TESTING_PATH={sdkForWorkloadPath}"); + EnvVars = new Dictionary(); bool workloadInstalled = EnvironmentVariables.SdkHasWorkloadInstalled != null && EnvironmentVariables.SdkHasWorkloadInstalled == "true"; if (workloadInstalled) { @@ -69,7 +68,6 @@ public BuildEnvironment() RuntimePackDir = Path.Combine(sdkForWorkloadPath, "packs", "Microsoft.NETCore.App.Runtime.Mono.browser-wasm", workloadPacksVersion); DirectoryBuildPropsContents = s_directoryBuildPropsForWorkloads; DirectoryBuildTargetsContents = s_directoryBuildTargetsForWorkloads; - EnvVars = new Dictionary(); var appRefDir = EnvironmentVariables.AppRefDir; if (string.IsNullOrEmpty(appRefDir)) @@ -80,36 +78,12 @@ public BuildEnvironment() } else { - string emsdkPath; - if (solutionRoot == null) - { - string? buildDir = EnvironmentVariables.WasmBuildSupportDir; - if (buildDir == null || !Directory.Exists(buildDir)) - throw new Exception($"Could not find the solution root, or a build dir: {buildDir}"); - - emsdkPath = Path.Combine(buildDir, "emsdk"); - RuntimePackDir = Path.Combine(buildDir, "microsoft.netcore.app.runtime.browser-wasm"); - DefaultBuildArgs = $" /p:WasmBuildSupportDir={buildDir} /p:EMSDK_PATH={emsdkPath} "; - } - else - { - string artifactsBinDir = Path.Combine(solutionRoot.FullName, "artifacts", "bin"); - RuntimePackDir = Path.Combine(artifactsBinDir, "microsoft.netcore.app.runtime.browser-wasm", s_runtimeConfig); - - if (string.IsNullOrEmpty(EnvironmentVariables.EMSDK_PATH)) - emsdkPath = Path.Combine(solutionRoot.FullName, "src", "mono", "wasm", "emsdk"); - else - emsdkPath = EnvironmentVariables.EMSDK_PATH; - - DefaultBuildArgs = $" /p:RuntimeSrcDir={solutionRoot.FullName} /p:RuntimeConfig={s_runtimeConfig} /p:EMSDK_PATH={emsdkPath} "; - } - - IsWorkload = false; - EnvVars = new Dictionary() - { - ["EMSDK_PATH"] = emsdkPath - }; + RuntimePackDir = "/dont-check-runtime-pack-dir-for-no-workloads-case"; + var appRefDir = EnvironmentVariables.AppRefDir; + if (string.IsNullOrEmpty(appRefDir)) + throw new Exception($"Cannot test with workloads without AppRefDir environment variable being set"); + DefaultBuildArgs = $" /p:AppRefDir={appRefDir}"; DirectoryBuildPropsContents = s_directoryBuildPropsForLocal; DirectoryBuildTargetsContents = s_directoryBuildTargetsForLocal; } diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs index ddcc00f84eb5..722d5246cc9c 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs @@ -71,7 +71,7 @@ static BuildTestBase() Console.WriteLine (""); Console.WriteLine ($"=============================================================================================="); - Console.WriteLine ($"=============== Running with {(s_buildEnv.IsWorkload ? "Workloads" : "EMSDK")} ==============="); + Console.WriteLine ($"=============== Running with {(s_buildEnv.IsWorkload ? "Workloads" : "No workloads")} ==============="); Console.WriteLine ($"=============================================================================================="); Console.WriteLine (""); } @@ -85,7 +85,6 @@ static BuildTestBase() public BuildTestBase(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) { _testIdx = Interlocked.Increment(ref s_testCounter); - Console.WriteLine($"-------- New test #{_testIdx} --------"); _buildContext = buildContext; _testOutput = output; _logPath = s_buildEnv.LogRootPath; // FIXME: @@ -833,7 +832,6 @@ public static string AddItemsPropertiesToProject(string projectFile, string? ext public void Dispose() { - Console.WriteLine($"-------- test done #{_testIdx} --------"); if (_projectDir != null && _enablePerTestCleanup) _buildContext.RemoveFromCache(_projectDir, keepDir: s_skipProjectCleanup); } diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/CleanTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/CleanTests.cs index e9551724ec8e..6a8ca8ce204d 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/CleanTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/CleanTests.cs @@ -20,7 +20,7 @@ public CleanTests(ITestOutputHelper output, SharedBuildPerTestClassFixture build { } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void Blazor_BuildThenClean_NativeRelinking(string config) @@ -48,13 +48,13 @@ public void Blazor_BuildThenClean_NativeRelinking(string config) AssertEmptyOrNonExistantDirectory(relinkDir); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void Blazor_BuildNoNative_ThenBuildNative_ThenClean(string config) => Blazor_BuildNativeNonNative_ThenCleanTest(config, firstBuildNative: false); - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void Blazor_BuildNative_ThenBuildNonNative_ThenClean(string config) diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs index 506aafe44b7f..a24397975668 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs @@ -13,8 +13,6 @@ internal static class EnvironmentVariables internal static readonly string? SdkHasWorkloadInstalled = Environment.GetEnvironmentVariable("SDK_HAS_WORKLOAD_INSTALLED"); internal static readonly string? WorkloadPacksVersion = Environment.GetEnvironmentVariable("WORKLOAD_PACKS_VER"); internal static readonly string? AppRefDir = Environment.GetEnvironmentVariable("AppRefDir"); - internal static readonly string? WasmBuildSupportDir = Environment.GetEnvironmentVariable("WasmBuildSupportDir"); - internal static readonly string? EMSDK_PATH = Environment.GetEnvironmentVariable("EMSDK_PATH"); internal static readonly string? TestLogPath = Environment.GetEnvironmentVariable("TEST_LOG_PATH"); internal static readonly string? SkipProjectCleanup = Environment.GetEnvironmentVariable("SKIP_PROJECT_CLEANUP"); internal static readonly string? XHarnessCliPath = Environment.GetEnvironmentVariable("XHARNESS_CLI_PATH"); diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/LocalEMSDKTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/LocalEMSDKTests.cs deleted file mode 100644 index 5a85ae935bb9..000000000000 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/LocalEMSDKTests.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Collections.Generic; -using System.IO; -using Xunit; -using Xunit.Abstractions; - -#nullable enable - -namespace Wasm.Build.Tests -{ - public class LocalEMSDKTests : BuildTestBase - { - public LocalEMSDKTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) : base(output, buildContext) - {} - - [ConditionalTheory(typeof(BuildTestBase), nameof(IsNotUsingWorkloads))] - [BuildAndRun(aot: true, host: RunHost.None, parameters: new object[] - { "", "error :.*emscripten.*required for AOT" })] - [BuildAndRun(aot: true, host: RunHost.None, parameters: new object[] - { "/non-existant/foo", "error.*\\(EMSDK_PATH\\)=/non-existant/foo.*required for AOT" })] - public void AOT_ErrorWhenMissingEMSDK(BuildArgs buildArgs, string emsdkPath, string errorPattern, string id) - { - string projectName = $"missing_emsdk"; - buildArgs = buildArgs with { - ProjectName = projectName, - ExtraBuildArgs = $"/p:EMSDK_PATH={emsdkPath}" - }; - buildArgs = ExpandBuildArgs(buildArgs); - - (_, string buildOutput) = BuildProject(buildArgs, - id: id, - new BuildProjectOptions( - InitProject: () => File.WriteAllText(Path.Combine(_projectDir!, "Program.cs"), s_mainReturns42), - ExpectSuccess: false)); - - Assert.Matches(errorPattern, buildOutput); - } - - [ConditionalTheory(typeof(BuildTestBase), nameof(IsNotUsingWorkloads))] - [BuildAndRun(host: RunHost.None, parameters: new object[] - { "", "error.*emscripten.*required for building native files" })] - [BuildAndRun(host: RunHost.None, parameters: new object[] - { "/non-existant/foo", "error.*\\(EMSDK_PATH\\)=/non-existant/foo.*required for building native files" })] - public void Relinking_ErrorWhenMissingEMSDK(BuildArgs buildArgs, string emsdkPath, string errorPattern, string id) - { - string projectName = $"simple_native_build"; - buildArgs = buildArgs with { - ProjectName = projectName, - ExtraBuildArgs = $"/p:EMSDK_PATH={emsdkPath}" - }; - buildArgs = ExpandBuildArgs(buildArgs, extraProperties: "true"); - - (_, string buildOutput) = BuildProject(buildArgs, - id: id, - new BuildProjectOptions( - InitProject: () => File.WriteAllText(Path.Combine(_projectDir!, "Program.cs"), s_mainReturns42), - ExpectSuccess: false)); - - Assert.Matches(errorPattern, buildOutput); - } - } - } diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeBuildTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeBuildTests.cs index 5107a7d52b71..17d140f9a562 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeBuildTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeBuildTests.cs @@ -101,7 +101,7 @@ public void IntermediateBitcodeToObjectFilesAreNotLLVMIR(BuildArgs buildArgs, st + " It might fail if it was incorrectly compiled to a bitcode file, instead of wasm."); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void BlazorWasm_CanRunMonoAOTCross_WithNoTrimming(string config) diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeLibraryTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeLibraryTests.cs index e8892a9575d0..c659ce90739e 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeLibraryTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeLibraryTests.cs @@ -17,7 +17,7 @@ public NativeLibraryTests(ITestOutputHelper output, SharedBuildPerTestClassFixtu { } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [BuildAndRun(aot: false)] [BuildAndRun(aot: true)] public void ProjectWithNativeReference(BuildArgs buildArgs, RunHost host, string id) @@ -48,7 +48,7 @@ public void ProjectWithNativeReference(BuildArgs buildArgs, RunHost host, string Assert.Contains("from pinvoke: 142", output); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [BuildAndRun(aot: false)] [BuildAndRun(aot: true)] public void ProjectUsingSkiaSharp(BuildArgs buildArgs, RunHost host, string id) diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeRebuildTests/NoopNativeRebuildTest.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeRebuildTests/NoopNativeRebuildTest.cs index 1b9d9f01bde2..1cc525391ad7 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeRebuildTests/NoopNativeRebuildTest.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/NativeRebuildTests/NoopNativeRebuildTest.cs @@ -35,7 +35,7 @@ public void NoOpRebuildForNativeBuilds(BuildArgs buildArgs, bool nativeRelink, b RunAndTestWasmApp(buildArgs, buildDir: _projectDir, expectedExitCode: 42, host: host, id: id); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void BlazorNoopRebuild(string config) @@ -62,7 +62,7 @@ public void BlazorNoopRebuild(string config) } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void BlazorOnlyLinkRebuild(string config) diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs index feada6bed9b9..133ec47c7105 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs @@ -17,7 +17,7 @@ public PInvokeTableGeneratorTests(ITestOutputHelper output, SharedBuildPerTestCl { } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [BuildAndRun(host: RunHost.V8)] public void NativeLibraryWithVariadicFunctions(BuildArgs buildArgs, RunHost host, string id) { @@ -54,7 +54,7 @@ public static int Main(string[] args) Assert.Contains("Main running", output); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [BuildAndRun(host: RunHost.V8)] public void DllImportWithFunctionPointersCompilesWithWarning(BuildArgs buildArgs, RunHost host, string id) { @@ -86,7 +86,7 @@ public static int Main() Assert.Contains("Main running", output); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [BuildAndRun(host: RunHost.V8)] public void DllImportWithFunctionPointers_ForVariadicFunction_CompilesWithWarning(BuildArgs buildArgs, RunHost host, string id) { diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/Wasm.Build.Tests.csproj b/src/tests/BuildWasmApps/Wasm.Build.Tests/Wasm.Build.Tests.csproj index c8e810f68be3..c28e51dd56f6 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/Wasm.Build.Tests.csproj +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/Wasm.Build.Tests.csproj @@ -43,10 +43,17 @@ + + <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' == 'true'">-notrait category=no-workload + <_XUnitTraitArg Condition="'$(TestUsingWorkloads)' != 'true'">-trait category=no-workload + + + + @@ -64,14 +71,17 @@ $(RunScriptCommand) %HELIX_XUNIT_ARGS% $(RunScriptCommand) -nocolor - $(RunScriptCommand) -verbose $(RunScriptCommand) -parallel none + $(RunScriptCommand) -verbose $(RunScriptCommand) -method $(XUnitMethodName) $(RunScriptCommand) -class $(XUnitClassName) $(RunScriptCommand) -notrait category=IgnoreForCI -notrait category=failing + + $(RunScriptCommand) %XUnitTraitArg% + $(RunScriptCommand) %24XUnitTraitArg diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/WasmTemplateTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/WasmTemplateTests.cs index 0624a488667f..649e38394c5d 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/WasmTemplateTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/WasmTemplateTests.cs @@ -19,7 +19,7 @@ public WasmTemplateTests(ITestOutputHelper output, SharedBuildPerTestClassFixtur { } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void BrowserBuildThenPublish(string config) @@ -62,7 +62,7 @@ public void BrowserBuildThenPublish(string config) UseCache: false)); } - [ConditionalTheory(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Theory] [InlineData("Debug")] [InlineData("Release")] public void ConsoleBuildThenPublish(string config) diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/WorkloadTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/WorkloadTests.cs index ae67ab1cb4b9..55df68a8987b 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/WorkloadTests.cs +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/WorkloadTests.cs @@ -22,7 +22,7 @@ public WorkloadTests(ITestOutputHelper output, SharedBuildPerTestClassFixture bu { } - [ConditionalFact(typeof(BuildTestBase), nameof(IsUsingWorkloads))] + [Fact] [SkipOnPlatform(TestPlatforms.Windows, "Not applicable on windows")] public void FilesInUnixFilesPermissionsXmlExist() { diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.props b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.props index 909ea0382ba0..058246e40862 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.props +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Local.Directory.Build.props @@ -1,11 +1 @@ - - - $(RuntimeSrcDir)\artifacts\bin\ - $([MSBuild]::NormalizeDirectory($(ArtifactsBinDir), 'microsoft.netcore.app.runtime.browser-wasm', $(RuntimeConfig))) - - - - $(WasmBuildSupportDir)\ - $([MSBuild]::NormalizeDirectory($(BuildBaseDir), 'microsoft.netcore.app.runtime.browser-wasm')) - - + diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.props b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.props index 6d53e53b3bf5..216bb0ea3f6a 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.props +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.props @@ -1,10 +1,5 @@ - <_WasmTargetsDir Condition="'$(RuntimeSrcDir)' != ''">$(RuntimeSrcDir)\src\mono\wasm\build\ - <_WasmTargetsDir Condition="'$(WasmBuildSupportDir)' != ''">$(WasmBuildSupportDir)\wasm\ - $(WasmBuildSupportDir)\emsdk\ true - - diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.targets b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.targets index 2bc257a74862..51d7fe87e197 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.targets +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Local.Directory.Build.targets @@ -1,28 +1,9 @@ - + - - - - - - - - - - - - - diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.cmd b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.cmd index 56c194e21e8a..bca245bc4378 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.cmd +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.cmd @@ -102,6 +102,6 @@ if [%TEST_USING_WORKLOADS%] == [true] ( set "PATH=%BASE_DIR%\sdk-no-workload;%PATH%" set SDK_HAS_WORKLOAD_INSTALLED=false set "SDK_FOR_WORKLOAD_TESTING_PATH=%BASE_DIR%\sdk-no-workload" - set "WasmBuildSupportDir=%BASE_DIR%\build" + set "AppRefDir=%BASE_DIR%\microsoft.netcore.app.ref" ) EXIT /b 0 diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.sh b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.sh index 95a4b8200930..1130c803f271 100644 --- a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.sh +++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/RunScriptTemplate.sh @@ -71,12 +71,11 @@ function set_env_vars() export SDK_HAS_WORKLOAD_INSTALLED=true export SDK_FOR_WORKLOAD_TESTING_PATH=$BASE_DIR/dotnet-workload export AppRefDir=$BASE_DIR/microsoft.netcore.app.ref - elif [[ -n "$HELIX_WORKITEM_UPLOAD_ROOT" ]]; then - export WasmBuildSupportDir=$BASE_DIR/build else export PATH=$BASE_DIR/sdk-no-workload:$PATH export SDK_HAS_WORKLOAD_INSTALLED=false export SDK_FOR_WORKLOAD_TESTING_PATH=$BASE_DIR/sdk-no-workload + export AppRefDir=$BASE_DIR/microsoft.netcore.app.ref fi } @@ -100,4 +99,4 @@ echo ----- end $(date) ----- exit code $_exitCode ------------------------------ echo "XHarness artifacts: $XHARNESS_OUT" -exit $_exitCode \ No newline at end of file +exit $_exitCode