diff --git a/eng/testing/workloads-testing.targets b/eng/testing/workloads-testing.targets
index 0c41fc2bb5c5c7..537fa502c57e18 100644
--- a/eng/testing/workloads-testing.targets
+++ b/eng/testing/workloads-testing.targets
@@ -3,7 +3,9 @@
true
+
+
<_SdkForWorkloadTestingBasePath>$(ArtifactsBinDir)
<_SdkWithNoWorkloadPath>$([MSBuild]::NormalizeDirectory($(_SdkForWorkloadTestingBasePath), 'dotnet-none'))
<_SdkWithNoWorkloadStampPath>$([MSBuild]::NormalizePath($(_SdkWithNoWorkloadPath), '.version-$(SdkVersionForWorkloadTesting).stamp'))
@@ -190,7 +192,7 @@
+ Outputs="@(_SdkWithWorkloadToInstall->'%(StampPath)');$(_SdkWithNoWorkloadStampPath)">
<_BuiltNuGets Include="$(LibrariesShippingPackagesDir)\*.nupkg" />
@@ -205,5 +207,7 @@
TemplateNuGetConfigPath="$(RepoRoot)NuGet.config"
SdkWithNoWorkloadInstalledPath="$(_SdkWithNoWorkloadPath)"
/>
+
+
diff --git a/src/libraries/sendtohelix-wasm.targets b/src/libraries/sendtohelix-wasm.targets
index acf037e988b272..82b14495dd5267 100644
--- a/src/libraries/sendtohelix-wasm.targets
+++ b/src/libraries/sendtohelix-wasm.targets
@@ -26,6 +26,7 @@
$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'mono', 'wasm', 'build'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'NetCoreServer', '$(Configuration)', '$(AspNetCoreAppCurrent)'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'RemoteLoopServer', '$(Configuration)', '$(AspNetCoreAppCurrent)'))
+ <_ShippingPackagesPath>$([MSBuild]::NormalizeDirectory($(ArtifactsDir), 'packages', $(Configuration), 'Shipping'))
$(DebuggerHost)-
$(Scenario)-
@@ -56,6 +57,7 @@
true
true
true
+ true
true
false
@@ -121,6 +123,9 @@
+
+
+
@@ -187,6 +192,10 @@
+
+
+
+
-
+
<_MonoWorkloadTargetsMobile>true
<_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersion6)
diff --git a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.targets.in b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.targets.in
index 8063ce6554016e..c6b512e6c45165 100644
--- a/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.targets.in
+++ b/src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/WorkloadManifest.targets.in
@@ -94,7 +94,7 @@
-
+
<_MonoWorkloadTargetsMobile>true
<_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersion7)
diff --git a/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs b/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs
index 1e77d5905f5a9b..f4763c1b76115f 100644
--- a/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs
+++ b/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs
@@ -97,6 +97,8 @@ public override bool Execute()
if (!ExecuteInternal(req) && !req.IgnoreErrors)
return false;
+
+ File.WriteAllText(req.StampPath, string.Empty);
}
return !Log.HasLoggedErrors;
@@ -399,6 +401,7 @@ internal sealed record InstallWorkloadRequest(
public string ManifestName => Workload.GetMetadata("ManifestName");
public string Version => Workload.GetMetadata("Version");
public string TargetPath => Target.GetMetadata("InstallPath");
+ public string StampPath => Target.GetMetadata("StampPath");
public bool IgnoreErrors => Workload.GetMetadata("IgnoreErrors").ToLowerInvariant() == "true";
public string WorkloadId => Workload.ItemSpec;
diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmBuildPublishTests.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/BlazorWasmBuildPublishTests.cs
index f034d2fcc40a8f..8123c9cfc1c9ed 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;
}
- [Theory]
+ [Theory, TestCategory("no-workload")]
[InlineData("Debug")]
[InlineData("Release")]
public void DefaultTemplate_WithoutWorkload(string config)
diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs
index abe5e102bc686e..8ce212003ab122 100644
--- a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs
+++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildEnvironment.cs
@@ -4,7 +4,6 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Reflection;
using System.Runtime.InteropServices;
#nullable enable
@@ -25,6 +24,7 @@ public class BuildEnvironment
public string LogRootPath { get; init; }
public string WorkloadPacksDir { get; init; }
+ public string BuiltNuGetsPath { get; init; }
public static readonly string RelativeTestAssetsPath = @"..\testassets\";
public static readonly string TestAssetsPath = Path.Combine(AppContext.BaseDirectory, "testassets");
@@ -99,6 +99,11 @@ public BuildEnvironment()
DirectoryBuildTargetsContents = s_directoryBuildTargetsForLocal;
}
+ if (EnvironmentVariables.BuiltNuGetsPath is null || !Directory.Exists(EnvironmentVariables.BuiltNuGetsPath))
+ throw new Exception($"Cannot find 'BUILT_NUGETS_PATH={EnvironmentVariables.BuiltNuGetsPath}'");
+
+ BuiltNuGetsPath = EnvironmentVariables.BuiltNuGetsPath;
+
// `runtime` repo's build environment sets these, and they
// mess up the build for the test project, which is using a different
// dotnet
diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs
index c2b64f790444bd..659075cc69d9d7 100644
--- a/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs
+++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/BuildTestBase.cs
@@ -41,6 +41,7 @@ public abstract class BuildTestBase : IClassFixture");
+ }
+
public string CreateWasmTemplateProject(string id, string template = "wasmbrowser")
{
InitPaths(id);
@@ -636,10 +660,10 @@ protected static void AssertFile(string file0, string file1, string? label=null,
protected (int exitCode, string buildOutput) AssertBuild(string args, string label="build", bool expectSuccess=true, IDictionary? envVars=null, int? timeoutMs=null)
{
var result = RunProcess(s_buildEnv.DotNet, _testOutput, args, workingDir: _projectDir, label: label, envVars: envVars, timeoutMs: timeoutMs ?? s_defaultPerTestTimeoutMs);
- if (expectSuccess)
- Assert.True(0 == result.exitCode, $"Build process exited with non-zero exit code: {result.exitCode}");
- else
- Assert.True(0 != result.exitCode, $"Build should have failed, but it didn't. Process exited with exitCode : {result.exitCode}");
+ if (expectSuccess && result.exitCode != 0)
+ throw new XunitException($"Build process exited with non-zero exit code: {result.exitCode}");
+ if (!expectSuccess && result.exitCode == 0)
+ throw new XunitException($"Build should have failed, but it didn't. Process exited with exitCode : {result.exitCode}");
return result;
}
diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs b/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs
index a2439797566848..87589af53f491b 100644
--- a/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs
+++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/EnvironmentVariables.cs
@@ -16,5 +16,7 @@ internal static class EnvironmentVariables
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");
+ internal static readonly string? BuiltNuGetsPath = Environment.GetEnvironmentVariable("BUILT_NUGETS_PATH");
+ internal static readonly string? BrowserPathForTests = Environment.GetEnvironmentVariable("BROWSER_PATH_FOR_TESTS");
}
}
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 a56ba59191d845..8c7ad904c26ebd 100644
--- a/src/tests/BuildWasmApps/Wasm.Build.Tests/Wasm.Build.Tests.csproj
+++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/Wasm.Build.Tests.csproj
@@ -56,7 +56,7 @@
-
+
<_XUnitTraitArg Condition="'$(TestUsingWorkloads)' == 'true'">-notrait category=no-workload
<_XUnitTraitArg Condition="'$(TestUsingWorkloads)' != 'true'">-trait category=no-workload
@@ -69,6 +69,9 @@
+
+
+
diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Directory.Build.targets b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Directory.Build.targets
index b2b875fd8449ce..419a6d48046ba0 100644
--- a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Directory.Build.targets
+++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/Blazor.Directory.Build.targets
@@ -3,7 +3,26 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/nuget7.config b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/nuget7.config
index d6de05ad43dddc..e7ad45f78b8cab 100644
--- a/src/tests/BuildWasmApps/Wasm.Build.Tests/data/nuget7.config
+++ b/src/tests/BuildWasmApps/Wasm.Build.Tests/data/nuget7.config
@@ -7,6 +7,7 @@
+