From f0f2577cf43cedf5b758a5e9b82abea9b732d9b3 Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Wed, 26 Feb 2025 16:03:17 +0000 Subject: [PATCH 1/7] using major version in tfm --- src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs | 2 +- src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs | 2 +- src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs | 8 ++++---- .../wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs | 6 +++--- .../wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs index db8a45889b58cd..95f1490be7471d 100644 --- a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs @@ -26,7 +26,7 @@ namespace Wasm.Build.Tests { public abstract class BuildTestBase : IClassFixture, IDisposable { - public const string DefaultTargetFramework = "net10.0"; + public static readonly string DefaultTargetFramework = $"net{Environment.Version.Major}.0"; protected static readonly bool s_skipProjectCleanup; protected static readonly string s_xharnessRunnerCommand; protected string? _projectDir; diff --git a/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs b/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs index 18f66e81e6da7e..2a3a839209a0aa 100644 --- a/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs +++ b/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs @@ -31,7 +31,7 @@ public void LibraryModeBuild(string sdk, bool hasWasmAppBundle) $""" - net10.0 + net{Environment.Version.Major}.0 wasi-wasm true Library diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index 6a6cb7103631e2..4bbb462f1a1878 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -26,9 +26,9 @@ namespace Wasm.Build.Tests { public abstract class BuildTestBase : IClassFixture, IDisposable { - public const string DefaultTargetFramework = "net10.0"; - public const string DefaultTargetFrameworkForBlazor = "net10.0"; - public const string TargetFrameworkForTasks = "net10.0"; + public static readonly string DefaultTargetFramework = $"net{Environment.Version.Major}.0"; + public static readonly string DefaultTargetFrameworkForBlazor = $"net{Environment.Version.Major}.0"; + public static readonly string TargetFrameworkForTasks = $"net{Environment.Version.Major}.0"; private const string DefaultEnvironmentLocale = "en-US"; protected static readonly string s_unicodeChars = "\u9FC0\u8712\u679B\u906B\u486B\u7149"; protected static readonly bool s_skipProjectCleanup; @@ -62,7 +62,7 @@ public abstract class BuildTestBase : IClassFixture s_buildEnv.IsWorkloadWithMultiThreadingForDefaultFramework; public static bool UseWebcil => s_buildEnv.UseWebcil; public static string GetNuGetConfigPathFor(string targetFramework) - => Path.Combine(BuildEnvironment.TestDataPath, targetFramework == "net10.0" ? "nuget10.config" : "nuget9.config"); + => Path.Combine(BuildEnvironment.TestDataPath, targetFramework == DefaultTargetFramework ? "nuget10.config" : "nuget9.config"); public TProvider GetProvider() where TProvider : ProjectProviderBase => (TProvider)_providerOfBaseType; diff --git a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs index 55d4f9e34887a1..e05a242b12722f 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs @@ -23,10 +23,10 @@ public NonWasmTemplateBuildTests(ITestOutputHelper output, SharedBuildPerTestCla // So, copy the reference for latest TFM, and add that back with the // TFM=DefaultTargetFramework // - // This is useful for the case when we are on tfm=net10.0, but sdk, and packages + // This is useful for the case when we are on latest TFM, but sdk, and packages // are really 10.0 . - private const string s_latestTargetFramework = "net10.0"; - private const string s_previousTargetFramework = "net9.0"; + private static readonly string s_latestTargetFramework = $"net{Environment.Version.Major}.0"; + private static readonly string s_previousTargetFramework = $"net{Environment.Version.Major - 1}.0"; private static string s_directoryBuildTargetsForPreviousTFM = $$""" diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs index eb56d5393aed52..7f812aa08f4ca2 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs @@ -108,7 +108,7 @@ private async Task BrowserRunTwiceWithAndThenWithoutBuildAsync(Configuration con public static IEnumerable BrowserBuildAndRunTestData() { yield return new object?[] { "", BuildTestBase.DefaultTargetFramework, DefaultRuntimeAssetsRelativePath }; - yield return new object?[] { "-f net10.0", "net10.0", DefaultRuntimeAssetsRelativePath }; + yield return new object?[] { $"-f net{Environment.Version.Major}.0", $"net{Environment.Version.Major}.0", DefaultRuntimeAssetsRelativePath }; if (EnvironmentVariables.WorkloadsTestPreviousVersions) { From b81f9fd9d46e6975f6dc680497318f501058bbbd Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Wed, 26 Feb 2025 16:57:55 +0000 Subject: [PATCH 2/7] fix --- src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs | 14 +++++++------- .../Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs | 6 +++--- .../Wasm.Build.Tests/Blazor/BuildPublishTests.cs | 4 ++-- src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs | 2 +- .../Blazor/SimpleMultiThreadedTests.cs | 2 +- .../wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs | 2 +- .../BrowserStructures/BuildOptions.cs | 4 ++-- .../BrowserStructures/MSBuildOptions.cs | 2 +- .../BrowserStructures/PublishOptions.cs | 4 ++-- src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs | 2 +- .../Wasm.Build.Tests/Common/BuildEnvironment.cs | 6 +++--- src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs | 2 +- src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs | 4 ++-- .../Wasm.Build.Tests/NonWasmTemplateBuildTests.cs | 3 ++- .../Wasm.Build.Tests/PInvokeTableGeneratorTests.cs | 4 ++-- .../Wasm.Build.Tests/Templates/NativeBuildTests.cs | 2 +- .../Templates/WasmTemplateTests.cs | 14 +++++++------- .../Templates/WasmTemplateTestsBase.cs | 8 ++++---- .../Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs | 2 +- 19 files changed, 44 insertions(+), 43 deletions(-) diff --git a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs index 95f1490be7471d..8a5b94c78441b1 100644 --- a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs @@ -143,7 +143,7 @@ protected void InitPaths(string id, string? projectParentDir = null) Directory.CreateDirectory(_logPath); } - protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = false, string targetFramework = DefaultTargetFramework) + protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = false, string targetFramework) { Directory.CreateDirectory(dir); File.WriteAllText(Path.Combine(dir, "Directory.Build.props"), s_buildEnv.DirectoryBuildPropsContents); @@ -213,7 +213,7 @@ protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProp if (options.CreateProject) { InitPaths(id); - InitProjectDir(_projectDir); + InitProjectDir(_projectDir, true, DefaultTargetFramework); options.InitProject?.Invoke(); File.WriteAllText(Path.Combine(_projectDir, $"{buildArgs.ProjectName}.csproj"), buildArgs.ProjectFileContents); @@ -300,7 +300,7 @@ private static string GetNuGetConfigWithLocalPackagesPath(string templatePath, s public string CreateWasmTemplateProject(string id, string template = "wasmbrowser", string extraArgs = "", bool runAnalyzers = true, string? projectParentDir = null) { InitPaths(id, projectParentDir); - InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true); + InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true, DefaultTargetFramework); File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.props"), ""); File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.targets"), @@ -461,14 +461,14 @@ private string FindSubDirIgnoringCase(string parentDir, string dirName) return first ?? Path.Combine(parentDir, dirName); } - protected string GetBinDir(string config, string targetFramework=DefaultTargetFramework, string? baseDir=null) + protected string GetBinDir(string config, string targetFramework, string? baseDir=null) { var dir = baseDir ?? _projectDir; Assert.NotNull(dir); return Path.Combine(dir!, "bin", config, targetFramework, BuildEnvironment.DefaultRuntimeIdentifier); } - protected string GetObjDir(string config, string targetFramework=DefaultTargetFramework, string? baseDir=null) + protected string GetObjDir(string config, string targetFramework, string? baseDir=null) { var dir = baseDir ?? _projectDir; Assert.NotNull(dir); @@ -656,11 +656,11 @@ private static string GetEnvironmentVariableOrDefault(string envVarName, string internal BuildPaths GetBuildPaths(BuildArgs buildArgs, bool forPublish=true) { - string objDir = GetObjDir(buildArgs.Config); + string objDir = GetObjDir(buildArgs.Config, DefaultTargetFramework); string bundleDir = Path.Combine(GetBinDir(baseDir: _projectDir, config: buildArgs.Config), "AppBundle"); string wasmDir = Path.Combine(objDir, "wasm", forPublish ? "for-publish" : "for-build"); - return new BuildPaths(wasmDir, objDir, GetBinDir(buildArgs.Config), bundleDir); + return new BuildPaths(wasmDir, objDir, GetBinDir(buildArgs.Config, DefaultTargetFramework), bundleDir); } internal IDictionary StatFiles(IEnumerable fullpaths) diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs index 23f8d6e43b0aa6..159013b320d1c9 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs @@ -67,7 +67,7 @@ protected override void OnAfterRender(bool firstRender) protected void UpdateHomePage() => UpdateFile(Path.Combine("Pages", "Home.razor"), blazorHomePageReplacements); - public void InitBlazorWasmProjectDir(string id, string targetFramework = DefaultTargetFrameworkForBlazor) + public void InitBlazorWasmProjectDir(string id, string targetFramework) { InitPaths(id); if (Directory.Exists(_projectDir)) @@ -87,7 +87,7 @@ public void InitBlazorWasmProjectDir(string id, string targetFramework = Default public string CreateBlazorWasmTemplateProject(string id) { - InitBlazorWasmProjectDir(id); + InitBlazorWasmProjectDir(id, DefaultTargetFrameworkForBlazor); using DotNetCommand dotnetCommand = new DotNetCommand(s_buildEnv, _testOutput, useDefaultArgs: false); CommandResult result = dotnetCommand.WithWorkingDirectory(_projectDir) .WithEnvironmentVariable("NUGET_PACKAGES", _nugetPackagesDir) @@ -220,6 +220,6 @@ public override async Task RunForPublishWithWebServer(RunOptions runO return serverEnvironment; } - public string GetBlazorBinFrameworkDir(Configuration config, bool forPublish, string framework = DefaultTargetFrameworkForBlazor, string? projectDir = null) + public string GetBlazorBinFrameworkDir(Configuration config, bool forPublish, string framework, string? projectDir = null) => _provider.GetBinFrameworkDir(config: config, forPublish: forPublish, framework: framework, projectDir: projectDir); } diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs index 56364a1a09c390..797f567879fb2e 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs @@ -111,11 +111,11 @@ public void DefaultTemplate_WithResources_Publish(Configuration config) // Build and assert resource dlls BlazorBuild(info, config); - AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: false)); + AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: false, DefaultTargetFrameworkForBlazor)); // Publish and assert resource dlls BlazorPublish(info, config, new PublishOptions(UseCache: false)); - AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: true)); + AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: true, DefaultTargetFrameworkForBlazor)); void AssertResourcesDlls(string basePath) { diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs index 34570cc616e015..525c9610607600 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs @@ -90,7 +90,7 @@ public void BugRegression_60479_WithRazorClassLib() BlazorPublish(info, config, new PublishOptions(UseCache: false)); // publish/wwwroot/_framework/blazor.boot.json - string frameworkDir = GetBlazorBinFrameworkDir(config, forPublish: true); + string frameworkDir = GetBlazorBinFrameworkDir(config, forPublish: true, DefaultTargetFrameworkForBlazor); string bootJson = Path.Combine(frameworkDir, "blazor.boot.json"); Assert.True(File.Exists(bootJson), $"Could not find {bootJson}"); diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs index 72ae03786db60f..7b68b6beed824a 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs @@ -30,7 +30,7 @@ public async Task BlazorBuildRunTest(Configuration config) string extraProperties = "true"; ProjectInfo info = CopyTestAsset(config, aot: false, TestAsset.BlazorBasicTestApp, "blazorwasm", extraProperties: extraProperties); bool isPublish = false; - string frameworkDir = GetBlazorBinFrameworkDir(config, isPublish); + string frameworkDir = GetBlazorBinFrameworkDir(config, isPublish, DefaultTargetFrameworkForBlazor); BuildProject(info, config, new BuildOptions(RuntimeType: RuntimeVariant.MultiThreaded)); // we wan to use "xharness wasm webserver" but from non-publish location string extraArgs = " --web-server-use-cors --web-server-use-cop --web-server-use-https --timeout=15:00:00"; diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs index e623c6d4efc7e3..63832f4b031c94 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs @@ -55,7 +55,7 @@ public async Task BlazorBuildAndRunForDifferentOutputPaths(Configuration config, string frameworkDir = useArtifacts ? Path.Combine( projectDir, "bin", info.ProjectName, config.ToString().ToLower(), "wwwroot", "_framework") : - GetBinFrameworkDir(config, isPublish); + GetBinFrameworkDir(config, isPublish, DefaultTargetFramework); BuildProject(info, config, new BuildOptions(NonDefaultFrameworkDir: frameworkDir)); await RunForBuildWithDotnetRun(new BlazorRunOptions(config)); } diff --git a/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/BuildOptions.cs b/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/BuildOptions.cs index d573405986a9cd..b648543b8768dd 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/BuildOptions.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/BuildOptions.cs @@ -13,7 +13,7 @@ public BuildOptions( bool IsPublish = false, bool AOT = false, NativeFilesType ExpectedFileType = NativeFilesType.FromRuntimePack, - string TargetFramework = BuildTestBase.DefaultTargetFramework, + string? TargetFramework = null, GlobalizationMode GlobalizationMode = GlobalizationMode.Sharded, string CustomIcuFile = "", bool UseCache = true, @@ -28,9 +28,9 @@ public BuildOptions( string ExtraMSBuildArgs = "" ) : base( IsPublish, + TargetFramework ?? BuildTestBase.DefaultTargetFramework, AOT, ExpectedFileType, - TargetFramework, GlobalizationMode, CustomIcuFile, UseCache, diff --git a/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/MSBuildOptions.cs b/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/MSBuildOptions.cs index 24ae96b0745816..7cfb59bf0c8f52 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/MSBuildOptions.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/MSBuildOptions.cs @@ -10,9 +10,9 @@ namespace Wasm.Build.Tests; public abstract record MSBuildOptions ( bool IsPublish, + string TargetFramework, bool AOT = false, NativeFilesType ExpectedFileType = NativeFilesType.FromRuntimePack, - string TargetFramework = BuildTestBase.DefaultTargetFramework, GlobalizationMode GlobalizationMode = GlobalizationMode.Sharded, string CustomIcuFile = "", bool UseCache = true, diff --git a/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/PublishOptions.cs b/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/PublishOptions.cs index 4eda155ad5d6f4..427e0ddac6845c 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/PublishOptions.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BrowserStructures/PublishOptions.cs @@ -16,7 +16,7 @@ public PublishOptions( bool IsPublish = true, bool AOT = false, NativeFilesType ExpectedFileType = NativeFilesType.FromRuntimePack, - string TargetFramework = BuildTestBase.DefaultTargetFramework, + string? TargetFramework = null, GlobalizationMode GlobalizationMode = GlobalizationMode.Sharded, string CustomIcuFile = "", bool UseCache = true, @@ -33,9 +33,9 @@ public PublishOptions( bool ExpectRelinkDirWhenPublishing = false ) : base( IsPublish, + TargetFramework ?? BuildTestBase.DefaultTargetFramework, AOT, ExpectedFileType, - TargetFramework, GlobalizationMode, CustomIcuFile, UseCache, diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index 4bbb462f1a1878..f1912b41fff77e 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -230,7 +230,7 @@ private string GetBinlogMessageContext(TextNode node) return (_logPath, _nugetPackagesDir); } - protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = true, string targetFramework = DefaultTargetFramework) + protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages, string targetFramework) { if (Directory.Exists(dir)) Directory.Delete(dir, recursive: true); diff --git a/src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs b/src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs index 0b71e4d663015e..e21004e5aab04e 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs @@ -162,18 +162,18 @@ public BuildEnvironment() Directory.CreateDirectory(TmpPath); } - public string GetRuntimePackVersion(string tfm = BuildTestBase.DefaultTargetFramework) + public string GetRuntimePackVersion(string tfm) => s_runtimePackVersions.TryGetValue(tfm, out string? version) ? version : throw new ArgumentException($"No runtime pack version found for tfm={tfm} ."); - public string GetRuntimePackDir(string tfm = BuildTestBase.DefaultTargetFramework, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded) + public string GetRuntimePackDir(string tfm, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded) => Path.Combine(WorkloadPacksDir, runtimeType is RuntimeVariant.SingleThreaded ? $"Microsoft.NETCore.App.Runtime.Mono.{DefaultRuntimeIdentifier}" : $"Microsoft.NETCore.App.Runtime.Mono.multithread.{DefaultRuntimeIdentifier}", GetRuntimePackVersion(tfm)); - public string GetRuntimeNativeDir(string tfm = BuildTestBase.DefaultTargetFramework, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded) + public string GetRuntimeNativeDir(string tfm, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded) => Path.Combine(GetRuntimePackDir(tfm, runtimeType), "runtimes", DefaultRuntimeIdentifier, "native"); public bool IsMultiThreadingRuntimePackAvailableFor(string tfm) => IsWorkload && File.Exists(Path.Combine(GetRuntimeNativeDir(tfm, RuntimeVariant.MultiThreaded), "dotnet.native.worker.mjs")); diff --git a/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs b/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs index daf9b7ea597176..014148a78ed739 100644 --- a/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs @@ -131,7 +131,7 @@ protected ProjectInfo CreateIcuProject( File.WriteAllText(programPath, programText); _testOutput.WriteLine($"----- Program: -----{Environment.NewLine}{programText}{Environment.NewLine}-------"); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); return info; } diff --git a/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs index 87b6c0cf0929ec..a389a58a04f170 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs @@ -32,7 +32,7 @@ public async Task SimpleNativeBuild(Configuration config, bool aot) extraProperties: "true"); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); (string _, string buildOutput) = PublishProject(info, config, isNativeBuild: true); await RunForPublishWithWebServer(new BrowserRunOptions(config, ExpectedExitCode: 42)); @@ -50,7 +50,7 @@ public void AOTNotSupportedWithNoTrimming(Configuration config, bool aot) extraProperties: "false"); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); (string _, string output) = PublishProject(info, config, new PublishOptions(ExpectSuccess: false, AOT: aot)); Assert.Contains("AOT is not supported without IL trimming", output); diff --git a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs index e05a242b12722f..ad5adfcce48d6d 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -103,7 +104,7 @@ private void NonWasmConsoleBuild(Configuration config, { string id = $"nonwasm_{targetFramework}_{config}_{GetRandomId()}"; InitPaths(id); - InitProjectDir(_projectDir); + InitProjectDir(_projectDir, true, DefaultTargetFramework); directoryBuildTargets ??= targetFramework == s_previousTargetFramework ? s_directoryBuildTargetsForPreviousTFM diff --git a/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs b/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs index bd1b23f3a88764..27413404ac0ae9 100644 --- a/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs @@ -214,7 +214,7 @@ public void IcallWithOverloadedParametersAndEnum(Configuration config, bool aot) _projectDir = Path.Combine(_projectDir, "..", "Library"); bool isPublish = false; // libraries do not have framework dirs - string hypotheticalFrameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish)); + string hypotheticalFrameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish, DefaultTargetFramework)); string libAssemblyPath = Path.Combine(hypotheticalFrameworkDir, "..", ".."); BuildProject(info, config, new BuildOptions(AssertAppBundle: false, AOT: aot)); // restore the project directory @@ -258,7 +258,7 @@ public void IcallWithOverloadedParametersAndEnum(Configuration config, bool aot) _testOutput.WriteLine ("Using WasmAppBuilder.dll from {0}", taskPath); string AddAssembly(string assemblyLocation, string name) => $""; - string frameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish)); + string frameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish, DefaultTargetFramework)); string appAssemblyPath = Path.Combine(frameworkDir, "..", ".."); string pinvokeReplacement = AddAssembly(appAssemblyPath, "System.Private.CoreLib") + diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs index b1f892901d13d4..376fadb14650cd 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs @@ -72,7 +72,7 @@ public async Task ProjectWithDllImportsRequiringMarshalIlGen_ArrayTypeParameter( ); string nativeCode = "void call_needing_marhsal_ilgen(void *x) {}"; File.WriteAllText(path: Path.Combine(_projectDir, nativeSourceFilename), nativeCode); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); ReplaceFile("Program.cs", Path.Combine(BuildEnvironment.TestAssetsPath, "marshal_ilgen_test.cs")); (string _, string buildOutput) = BuildProject(info, config, new BuildOptions(AssertAppBundle: false), isNativeBuild: true); diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs index 7f812aa08f4ca2..cfc65efa8160c5 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs @@ -37,7 +37,7 @@ public void BrowserBuildThenPublish(Configuration config) """; ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false, "browser", insertAtEnd: atEnd); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); BuildProject(info, config); @@ -80,7 +80,7 @@ private async Task BrowserRunTwiceWithAndThenWithoutBuildAsync(Configuration con { ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false, "browser", extraProperties: extraProperties); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); string workingDir = runOutsideProjectDirectory ? BuildEnvironment.TmpPath : _projectDir; @@ -158,14 +158,14 @@ public async Task BuildAndRunForDifferentOutputPaths(Configuration config, bool { ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); bool isPublish = false; string projectDirectory = Path.GetDirectoryName(info.ProjectFilePath) ?? ""; // browser app does not allow appending RID string frameworkDir = useArtifacts ? Path.Combine(projectDirectory, "bin", info.ProjectName, config.ToString().ToLower(), "wwwroot", "_framework") : - GetBinFrameworkDir(config, isPublish); + GetBinFrameworkDir(config, isPublish, DefaultTargetFramework); string extraPropertiesForDBP = string.Empty; if (useArtifacts) @@ -197,7 +197,7 @@ public async Task Test_WasmStripILAfterAOT(string stripILAfterAOT, bool expectIL ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot, "strip", extraProperties: extraProperties); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(); + UpdateBrowserMainJs(DefaultTargetFramework); PublishProject(info, config, new PublishOptions(UseCache: false, AssertAppBundle: false)); await RunForBuildWithDotnetRun(new BrowserRunOptions(config, ExpectedExitCode: 42)); @@ -205,7 +205,7 @@ public async Task Test_WasmStripILAfterAOT(string stripILAfterAOT, bool expectIL string projectDirectory = Path.GetDirectoryName(info.ProjectFilePath)!; string objBuildDir = Path.Combine(projectDirectory, "obj", config.ToString(), BuildTestBase.DefaultTargetFramework, "wasm", "for-publish"); - string frameworkDir = GetBinFrameworkDir(config, forPublish: true); + string frameworkDir = GetBinFrameworkDir(config, forPublish: true, DefaultTargetFramework); TestWasmStripILAfterAOTOutput(objBuildDir, frameworkDir, expectILStripping, _testOutput); } @@ -273,7 +273,7 @@ public void PublishPdb(bool copyOutputSymbolsToPublishDirectory) ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false, "publishpdb", extraProperties: extraProperties); PublishProject(info, config, new PublishOptions(ExtraMSBuildArgs: "-p:CompressionEnabled=true")); - string publishPath = GetBinFrameworkDir(config, forPublish: true); + string publishPath = GetBinFrameworkDir(config, forPublish: true, DefaultTargetFramework); AssertFile(".pdb"); AssertFile(".pdb.gz"); AssertFile(".pdb.br"); diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs index 3b70408b34732d..007ee2985f9faa 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs @@ -51,7 +51,7 @@ private string GetProjectName(string idPrefix, Configuration config, bool aot, b { string projectName = GetProjectName(idPrefix, config, aot, appendUnicodeToPath, avoidAotLongPathIssue); (string logPath, string nugetDir) = InitPaths(projectName); - InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true); + InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true, DefaultTargetFramework); return (projectName, logPath, nugetDir); } @@ -225,7 +225,7 @@ protected void DeleteFile(string pathRelativeToProjectDir) } } - protected void UpdateBrowserMainJs(string targetFramework = DefaultTargetFramework, string runtimeAssetsRelativePath = DefaultRuntimeAssetsRelativePath) + protected void UpdateBrowserMainJs(string targetFramework, string runtimeAssetsRelativePath = DefaultRuntimeAssetsRelativePath) { string mainJsPath = Path.Combine(_projectDir, "wwwroot", "main.js"); string mainJsContent = File.ReadAllText(mainJsPath); @@ -265,7 +265,7 @@ await BrowserRunTest($"run -c {runOptions.Configuration} --no-build", _projectDi RunHost.WebServer => await BrowserRunTest($"{s_xharnessRunnerCommand} wasm webserver --app=. --web-server-use-default-files", string.IsNullOrEmpty(runOptions.CustomBundleDir) ? - Path.GetFullPath(Path.Combine(GetBinFrameworkDir(runOptions.Configuration, forPublish: true), "..")) : + Path.GetFullPath(Path.Combine(GetBinFrameworkDir(runOptions.Configuration, forPublish: true, DefaultTargetFramework), "..")) : runOptions.CustomBundleDir, runOptions), @@ -366,7 +366,7 @@ void OnErrorMessage(string msg) } } - public string GetBinFrameworkDir(Configuration config, bool forPublish, string framework = DefaultTargetFramework, string? projectDir = null) => + public string GetBinFrameworkDir(Configuration config, bool forPublish, string framework, string? projectDir = null) => _provider.GetBinFrameworkDir(config, forPublish, framework, projectDir); public BuildPaths GetBuildPaths(Configuration config, bool forPublish) => diff --git a/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs b/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs index d5161990bce189..c5f51baf729afc 100644 --- a/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs @@ -22,7 +22,7 @@ public async void RunOutOfAppBundle(Configuration config, bool aot) UpdateFile(Path.Combine("Common", "Program.cs"), s_mainReturns42); (string _, string output) = PublishProject(info, config, new PublishOptions(AOT: aot)); - string binFrameworkDir = GetBinFrameworkDir(config, forPublish: true); + string binFrameworkDir = GetBinFrameworkDir(config, forPublish: true, DefaultTargetFramework); string appBundleDir = Path.Combine(binFrameworkDir, ".."); string outerDir = Path.GetFullPath(Path.Combine(appBundleDir, "..")); string indexHtmlPath = Path.Combine(appBundleDir, "index.html"); From da4288829d636456779beebc51ce64b18f1a7191 Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Wed, 26 Feb 2025 18:21:11 +0000 Subject: [PATCH 3/7] update --- src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs | 2 +- src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs b/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs index 2a3a839209a0aa..552b74de0976f0 100644 --- a/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs +++ b/src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs @@ -31,7 +31,7 @@ public void LibraryModeBuild(string sdk, bool hasWasmAppBundle) $""" - net{Environment.Version.Major}.0 + {DefaultTargetFramework} wasi-wasm true Library diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs index cfc65efa8160c5..ad4b23a3777431 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs @@ -108,7 +108,7 @@ private async Task BrowserRunTwiceWithAndThenWithoutBuildAsync(Configuration con public static IEnumerable BrowserBuildAndRunTestData() { yield return new object?[] { "", BuildTestBase.DefaultTargetFramework, DefaultRuntimeAssetsRelativePath }; - yield return new object?[] { $"-f net{Environment.Version.Major}.0", $"net{Environment.Version.Major}.0", DefaultRuntimeAssetsRelativePath }; + yield return new object?[] { $"-f {DefaultTargetFramework}", DefaultTargetFramework, DefaultRuntimeAssetsRelativePath }; if (EnvironmentVariables.WorkloadsTestPreviousVersions) { From fe23e86125a6cc305c0e80d65ec8001fea995dbc Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Wed, 26 Feb 2025 20:21:34 +0200 Subject: [PATCH 4/7] Update src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alexander Köplinger --- src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs index ad5adfcce48d6d..567208499834c8 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs @@ -25,7 +25,7 @@ public NonWasmTemplateBuildTests(ITestOutputHelper output, SharedBuildPerTestCla // TFM=DefaultTargetFramework // // This is useful for the case when we are on latest TFM, but sdk, and packages - // are really 10.0 . + // are really the previous version . private static readonly string s_latestTargetFramework = $"net{Environment.Version.Major}.0"; private static readonly string s_previousTargetFramework = $"net{Environment.Version.Major - 1}.0"; private static string s_directoryBuildTargetsForPreviousTFM = From 32b0177e980af3873ae995cb08ecd3541ba4e34e Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Wed, 26 Feb 2025 19:59:06 +0000 Subject: [PATCH 5/7] fix --- src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs | 13 +++++++------ src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs | 2 +- .../Wasm.Build.Tests/NonWasmTemplateBuildTests.cs | 2 +- .../Templates/WasmTemplateTestsBase.cs | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs index 8a5b94c78441b1..5e9d838ed220b2 100644 --- a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs @@ -143,7 +143,7 @@ protected void InitPaths(string id, string? projectParentDir = null) Directory.CreateDirectory(_logPath); } - protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = false, string targetFramework) + protected void InitProjectDir(string dir, string targetFramework, bool addNuGetSourceForLocalPackages = false) { Directory.CreateDirectory(dir); File.WriteAllText(Path.Combine(dir, "Directory.Build.props"), s_buildEnv.DirectoryBuildPropsContents); @@ -164,7 +164,7 @@ protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = } } - protected const string SimpleProjectTemplate = + protected static readonly string SimpleProjectTemplate = @$" {DefaultTargetFramework} @@ -178,8 +178,9 @@ protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = ##INSERT_AT_END## "; - protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProperties="", string extraItems="", string insertAtEnd="", string projectTemplate=SimpleProjectTemplate) + protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProperties="", string extraItems="", string insertAtEnd="") { + string projectTemplate=SimpleProjectTemplate; if (buildArgs.AOT) { extraProperties = $"{extraProperties}\ntrue"; @@ -213,7 +214,7 @@ protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProp if (options.CreateProject) { InitPaths(id); - InitProjectDir(_projectDir, true, DefaultTargetFramework); + InitProjectDir(_projectDir, DefaultTargetFramework, true); options.InitProject?.Invoke(); File.WriteAllText(Path.Combine(_projectDir, $"{buildArgs.ProjectName}.csproj"), buildArgs.ProjectFileContents); @@ -300,7 +301,7 @@ private static string GetNuGetConfigWithLocalPackagesPath(string templatePath, s public string CreateWasmTemplateProject(string id, string template = "wasmbrowser", string extraArgs = "", bool runAnalyzers = true, string? projectParentDir = null) { InitPaths(id, projectParentDir); - InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true, DefaultTargetFramework); + InitProjectDir(_projectDir, DefaultTargetFramework, addNuGetSourceForLocalPackages: true); File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.props"), ""); File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.targets"), @@ -657,7 +658,7 @@ private static string GetEnvironmentVariableOrDefault(string envVarName, string internal BuildPaths GetBuildPaths(BuildArgs buildArgs, bool forPublish=true) { string objDir = GetObjDir(buildArgs.Config, DefaultTargetFramework); - string bundleDir = Path.Combine(GetBinDir(baseDir: _projectDir, config: buildArgs.Config), "AppBundle"); + string bundleDir = Path.Combine(GetBinDir(buildArgs.Config, DefaultTargetFramework, _projectDir), "AppBundle"); string wasmDir = Path.Combine(objDir, "wasm", forPublish ? "for-publish" : "for-build"); return new BuildPaths(wasmDir, objDir, GetBinDir(buildArgs.Config, DefaultTargetFramework), bundleDir); diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index f1912b41fff77e..0e4bfd2dc64605 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -230,7 +230,7 @@ private string GetBinlogMessageContext(TextNode node) return (_logPath, _nugetPackagesDir); } - protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages, string targetFramework) + protected void InitProjectDir(string dir, string targetFramework, bool addNuGetSourceForLocalPackages) { if (Directory.Exists(dir)) Directory.Delete(dir, recursive: true); diff --git a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs index 567208499834c8..b04f450a8946f0 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs @@ -104,7 +104,7 @@ private void NonWasmConsoleBuild(Configuration config, { string id = $"nonwasm_{targetFramework}_{config}_{GetRandomId()}"; InitPaths(id); - InitProjectDir(_projectDir, true, DefaultTargetFramework); + InitProjectDir(_projectDir, DefaultTargetFramework, true); directoryBuildTargets ??= targetFramework == s_previousTargetFramework ? s_directoryBuildTargetsForPreviousTFM diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs index 007ee2985f9faa..de13dfbc139079 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs @@ -51,7 +51,7 @@ private string GetProjectName(string idPrefix, Configuration config, bool aot, b { string projectName = GetProjectName(idPrefix, config, aot, appendUnicodeToPath, avoidAotLongPathIssue); (string logPath, string nugetDir) = InitPaths(projectName); - InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true, DefaultTargetFramework); + InitProjectDir(_projectDir, DefaultTargetFramework, addNuGetSourceForLocalPackages: true); return (projectName, logPath, nugetDir); } From 89390a1d12b6a6b8b66dc84f31878cb3720c01b5 Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Fri, 28 Feb 2025 10:56:16 +0000 Subject: [PATCH 6/7] feedback --- .../Wasm.Browser.Bench.Sample.csproj | 2 +- .../wasi/Wasi.Build.Tests/BuildTestBase.cs | 23 +++++++++++-------- .../Blazor/BlazorWasmTestBase.cs | 9 ++++---- .../Blazor/BuildPublishTests.cs | 4 ++-- .../wasm/Wasm.Build.Tests/Blazor/MiscTests.cs | 2 +- .../Blazor/SimpleMultiThreadedTests.cs | 2 +- .../Wasm.Build.Tests/Blazor/SimpleRunTests.cs | 2 +- .../wasm/Wasm.Build.Tests/BuildTestBase.cs | 5 ++-- .../wasm/Wasm.Build.Tests/IcuTestsBase.cs | 2 +- .../wasm/Wasm.Build.Tests/NativeBuildTests.cs | 4 ++-- .../NonWasmTemplateBuildTests.cs | 2 +- .../PInvokeTableGeneratorTests.cs | 4 ++-- .../Templates/NativeBuildTests.cs | 2 +- .../Templates/WasmTemplateTests.cs | 14 +++++------ .../Templates/WasmTemplateTestsBase.cs | 11 +++++---- .../WasmRunOutOfAppBundleTests.cs | 2 +- 16 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj b/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj index be2adc12017035..97de6e45fae919 100644 --- a/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj +++ b/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj @@ -58,7 +58,7 @@ diff --git a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs index 5e9d838ed220b2..7bb4d9326a0a62 100644 --- a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs @@ -55,7 +55,7 @@ public abstract class BuildTestBase : IClassFixture s_buildEnv.IsWorkload; public static bool IsNotUsingWorkloads => !s_buildEnv.IsWorkload; public static string GetNuGetConfigPathFor(string targetFramework) => - Path.Combine(BuildEnvironment.TestDataPath, "nuget10.config"); + Path.Combine(BuildEnvironment.TestDataPath, $"nuget{Environment.Version.Major}.config"); static BuildTestBase() { @@ -143,8 +143,9 @@ protected void InitPaths(string id, string? projectParentDir = null) Directory.CreateDirectory(_logPath); } - protected void InitProjectDir(string dir, string targetFramework, bool addNuGetSourceForLocalPackages = false) + protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = false, string? targetFramework = null) { + targetFramework ??= DefaultTargetFramework; Directory.CreateDirectory(dir); File.WriteAllText(Path.Combine(dir, "Directory.Build.props"), s_buildEnv.DirectoryBuildPropsContents); File.WriteAllText(Path.Combine(dir, "Directory.Build.targets"), s_buildEnv.DirectoryBuildTargetsContents); @@ -180,7 +181,7 @@ protected void InitProjectDir(string dir, string targetFramework, bool addNuGetS protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProperties="", string extraItems="", string insertAtEnd="") { - string projectTemplate=SimpleProjectTemplate; + string projectTemplate = SimpleProjectTemplate; if (buildArgs.AOT) { extraProperties = $"{extraProperties}\ntrue"; @@ -214,7 +215,7 @@ protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProp if (options.CreateProject) { InitPaths(id); - InitProjectDir(_projectDir, DefaultTargetFramework, true); + InitProjectDir(_projectDir); options.InitProject?.Invoke(); File.WriteAllText(Path.Combine(_projectDir, $"{buildArgs.ProjectName}.csproj"), buildArgs.ProjectFileContents); @@ -301,7 +302,7 @@ private static string GetNuGetConfigWithLocalPackagesPath(string templatePath, s public string CreateWasmTemplateProject(string id, string template = "wasmbrowser", string extraArgs = "", bool runAnalyzers = true, string? projectParentDir = null) { InitPaths(id, projectParentDir); - InitProjectDir(_projectDir, DefaultTargetFramework, addNuGetSourceForLocalPackages: true); + InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true); File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.props"), ""); File.WriteAllText(Path.Combine(_projectDir, "Directory.Build.targets"), @@ -462,15 +463,17 @@ private string FindSubDirIgnoringCase(string parentDir, string dirName) return first ?? Path.Combine(parentDir, dirName); } - protected string GetBinDir(string config, string targetFramework, string? baseDir=null) + protected string GetBinDir(string config, string? targetFramework = null, string? baseDir=null) { + targetFramework ??= DefaultTargetFramework; var dir = baseDir ?? _projectDir; Assert.NotNull(dir); return Path.Combine(dir!, "bin", config, targetFramework, BuildEnvironment.DefaultRuntimeIdentifier); } - protected string GetObjDir(string config, string targetFramework, string? baseDir=null) + protected string GetObjDir(string config, string? targetFramework = null, string? baseDir=null) { + targetFramework ??= DefaultTargetFramework; var dir = baseDir ?? _projectDir; Assert.NotNull(dir); return Path.Combine(dir!, "obj", config, targetFramework, BuildEnvironment.DefaultRuntimeIdentifier); @@ -657,11 +660,11 @@ private static string GetEnvironmentVariableOrDefault(string envVarName, string internal BuildPaths GetBuildPaths(BuildArgs buildArgs, bool forPublish=true) { - string objDir = GetObjDir(buildArgs.Config, DefaultTargetFramework); - string bundleDir = Path.Combine(GetBinDir(buildArgs.Config, DefaultTargetFramework, _projectDir), "AppBundle"); + string objDir = GetObjDir(buildArgs.Config); + string bundleDir = Path.Combine(GetBinDir(baseDir: _projectDir, config: buildArgs.Config), "AppBundle"); string wasmDir = Path.Combine(objDir, "wasm", forPublish ? "for-publish" : "for-build"); - return new BuildPaths(wasmDir, objDir, GetBinDir(buildArgs.Config, DefaultTargetFramework), bundleDir); + return new BuildPaths(wasmDir, objDir, GetBinDir(buildArgs.Config), bundleDir); } internal IDictionary StatFiles(IEnumerable fullpaths) diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs index 159013b320d1c9..f37ff2ade6f7b6 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs @@ -67,8 +67,9 @@ protected override void OnAfterRender(bool firstRender) protected void UpdateHomePage() => UpdateFile(Path.Combine("Pages", "Home.razor"), blazorHomePageReplacements); - public void InitBlazorWasmProjectDir(string id, string targetFramework) + public void InitBlazorWasmProjectDir(string id, string? targetFramework = null) { + targetFramework ??= DefaultTargetFrameworkForBlazor; InitPaths(id); if (Directory.Exists(_projectDir)) Directory.Delete(_projectDir, recursive: true); @@ -87,7 +88,7 @@ public void InitBlazorWasmProjectDir(string id, string targetFramework) public string CreateBlazorWasmTemplateProject(string id) { - InitBlazorWasmProjectDir(id, DefaultTargetFrameworkForBlazor); + InitBlazorWasmProjectDir(id); using DotNetCommand dotnetCommand = new DotNetCommand(s_buildEnv, _testOutput, useDefaultArgs: false); CommandResult result = dotnetCommand.WithWorkingDirectory(_projectDir) .WithEnvironmentVariable("NUGET_PACKAGES", _nugetPackagesDir) @@ -220,6 +221,6 @@ public override async Task RunForPublishWithWebServer(RunOptions runO return serverEnvironment; } - public string GetBlazorBinFrameworkDir(Configuration config, bool forPublish, string framework, string? projectDir = null) - => _provider.GetBinFrameworkDir(config: config, forPublish: forPublish, framework: framework, projectDir: projectDir); + public string GetBlazorBinFrameworkDir(Configuration config, bool forPublish, string? framework = null, string? projectDir = null) + => _provider.GetBinFrameworkDir(config: config, forPublish: forPublish, framework: framework ?? DefaultTargetFrameworkForBlazor, projectDir: projectDir); } diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs index 3bd34477dcd7ba..e9335ea19424f8 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs @@ -109,11 +109,11 @@ public void DefaultTemplate_WithResources_Publish(Configuration config) // Build and assert resource dlls BlazorBuild(info, config); - AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: false, DefaultTargetFrameworkForBlazor)); + AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: false)); // Publish and assert resource dlls BlazorPublish(info, config, new PublishOptions(UseCache: false)); - AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: true, DefaultTargetFrameworkForBlazor)); + AssertResourcesDlls(GetBlazorBinFrameworkDir(config, forPublish: true)); void AssertResourcesDlls(string basePath) { diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs index 525c9610607600..34570cc616e015 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/MiscTests.cs @@ -90,7 +90,7 @@ public void BugRegression_60479_WithRazorClassLib() BlazorPublish(info, config, new PublishOptions(UseCache: false)); // publish/wwwroot/_framework/blazor.boot.json - string frameworkDir = GetBlazorBinFrameworkDir(config, forPublish: true, DefaultTargetFrameworkForBlazor); + string frameworkDir = GetBlazorBinFrameworkDir(config, forPublish: true); string bootJson = Path.Combine(frameworkDir, "blazor.boot.json"); Assert.True(File.Exists(bootJson), $"Could not find {bootJson}"); diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs index 7b68b6beed824a..72ae03786db60f 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleMultiThreadedTests.cs @@ -30,7 +30,7 @@ public async Task BlazorBuildRunTest(Configuration config) string extraProperties = "true"; ProjectInfo info = CopyTestAsset(config, aot: false, TestAsset.BlazorBasicTestApp, "blazorwasm", extraProperties: extraProperties); bool isPublish = false; - string frameworkDir = GetBlazorBinFrameworkDir(config, isPublish, DefaultTargetFrameworkForBlazor); + string frameworkDir = GetBlazorBinFrameworkDir(config, isPublish); BuildProject(info, config, new BuildOptions(RuntimeType: RuntimeVariant.MultiThreaded)); // we wan to use "xharness wasm webserver" but from non-publish location string extraArgs = " --web-server-use-cors --web-server-use-cop --web-server-use-https --timeout=15:00:00"; diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs index 63832f4b031c94..e623c6d4efc7e3 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/SimpleRunTests.cs @@ -55,7 +55,7 @@ public async Task BlazorBuildAndRunForDifferentOutputPaths(Configuration config, string frameworkDir = useArtifacts ? Path.Combine( projectDir, "bin", info.ProjectName, config.ToString().ToLower(), "wwwroot", "_framework") : - GetBinFrameworkDir(config, isPublish, DefaultTargetFramework); + GetBinFrameworkDir(config, isPublish); BuildProject(info, config, new BuildOptions(NonDefaultFrameworkDir: frameworkDir)); await RunForBuildWithDotnetRun(new BlazorRunOptions(config)); } diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index 0e4bfd2dc64605..9caff4c2e445cb 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -62,7 +62,7 @@ public abstract class BuildTestBase : IClassFixture s_buildEnv.IsWorkloadWithMultiThreadingForDefaultFramework; public static bool UseWebcil => s_buildEnv.UseWebcil; public static string GetNuGetConfigPathFor(string targetFramework) - => Path.Combine(BuildEnvironment.TestDataPath, targetFramework == DefaultTargetFramework ? "nuget10.config" : "nuget9.config"); + => Path.Combine(BuildEnvironment.TestDataPath, targetFramework == DefaultTargetFramework ? $"nuget{Environment.Version.Major}.config" : $"nuget{Environment.Version.Major - 1}.config"); public TProvider GetProvider() where TProvider : ProjectProviderBase => (TProvider)_providerOfBaseType; @@ -230,8 +230,9 @@ private string GetBinlogMessageContext(TextNode node) return (_logPath, _nugetPackagesDir); } - protected void InitProjectDir(string dir, string targetFramework, bool addNuGetSourceForLocalPackages) + protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = true, string? targetFramework = null) { + targetFramework ??= DefaultTargetFramework; if (Directory.Exists(dir)) Directory.Delete(dir, recursive: true); Directory.CreateDirectory(dir); diff --git a/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs b/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs index 014148a78ed739..daf9b7ea597176 100644 --- a/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs @@ -131,7 +131,7 @@ protected ProjectInfo CreateIcuProject( File.WriteAllText(programPath, programText); _testOutput.WriteLine($"----- Program: -----{Environment.NewLine}{programText}{Environment.NewLine}-------"); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); return info; } diff --git a/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs index a389a58a04f170..87b6c0cf0929ec 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NativeBuildTests.cs @@ -32,7 +32,7 @@ public async Task SimpleNativeBuild(Configuration config, bool aot) extraProperties: "true"); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); (string _, string buildOutput) = PublishProject(info, config, isNativeBuild: true); await RunForPublishWithWebServer(new BrowserRunOptions(config, ExpectedExitCode: 42)); @@ -50,7 +50,7 @@ public void AOTNotSupportedWithNoTrimming(Configuration config, bool aot) extraProperties: "false"); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); (string _, string output) = PublishProject(info, config, new PublishOptions(ExpectSuccess: false, AOT: aot)); Assert.Contains("AOT is not supported without IL trimming", output); diff --git a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs index b04f450a8946f0..43cb54902b1acb 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs @@ -104,7 +104,7 @@ private void NonWasmConsoleBuild(Configuration config, { string id = $"nonwasm_{targetFramework}_{config}_{GetRandomId()}"; InitPaths(id); - InitProjectDir(_projectDir, DefaultTargetFramework, true); + InitProjectDir(_projectDir); directoryBuildTargets ??= targetFramework == s_previousTargetFramework ? s_directoryBuildTargetsForPreviousTFM diff --git a/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs b/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs index 27413404ac0ae9..bd1b23f3a88764 100644 --- a/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/PInvokeTableGeneratorTests.cs @@ -214,7 +214,7 @@ public void IcallWithOverloadedParametersAndEnum(Configuration config, bool aot) _projectDir = Path.Combine(_projectDir, "..", "Library"); bool isPublish = false; // libraries do not have framework dirs - string hypotheticalFrameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish, DefaultTargetFramework)); + string hypotheticalFrameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish)); string libAssemblyPath = Path.Combine(hypotheticalFrameworkDir, "..", ".."); BuildProject(info, config, new BuildOptions(AssertAppBundle: false, AOT: aot)); // restore the project directory @@ -258,7 +258,7 @@ public void IcallWithOverloadedParametersAndEnum(Configuration config, bool aot) _testOutput.WriteLine ("Using WasmAppBuilder.dll from {0}", taskPath); string AddAssembly(string assemblyLocation, string name) => $""; - string frameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish, DefaultTargetFramework)); + string frameworkDir = Path.Combine(GetBinFrameworkDir(config, isPublish)); string appAssemblyPath = Path.Combine(frameworkDir, "..", ".."); string pinvokeReplacement = AddAssembly(appAssemblyPath, "System.Private.CoreLib") + diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs index 376fadb14650cd..b1f892901d13d4 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/NativeBuildTests.cs @@ -72,7 +72,7 @@ public async Task ProjectWithDllImportsRequiringMarshalIlGen_ArrayTypeParameter( ); string nativeCode = "void call_needing_marhsal_ilgen(void *x) {}"; File.WriteAllText(path: Path.Combine(_projectDir, nativeSourceFilename), nativeCode); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); ReplaceFile("Program.cs", Path.Combine(BuildEnvironment.TestAssetsPath, "marshal_ilgen_test.cs")); (string _, string buildOutput) = BuildProject(info, config, new BuildOptions(AssertAppBundle: false), isNativeBuild: true); diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs index ad4b23a3777431..d29689db5488fe 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs @@ -37,7 +37,7 @@ public void BrowserBuildThenPublish(Configuration config) """; ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false, "browser", insertAtEnd: atEnd); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); BuildProject(info, config); @@ -80,7 +80,7 @@ private async Task BrowserRunTwiceWithAndThenWithoutBuildAsync(Configuration con { ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false, "browser", extraProperties: extraProperties); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); string workingDir = runOutsideProjectDirectory ? BuildEnvironment.TmpPath : _projectDir; @@ -158,14 +158,14 @@ public async Task BuildAndRunForDifferentOutputPaths(Configuration config, bool { ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); bool isPublish = false; string projectDirectory = Path.GetDirectoryName(info.ProjectFilePath) ?? ""; // browser app does not allow appending RID string frameworkDir = useArtifacts ? Path.Combine(projectDirectory, "bin", info.ProjectName, config.ToString().ToLower(), "wwwroot", "_framework") : - GetBinFrameworkDir(config, isPublish, DefaultTargetFramework); + GetBinFrameworkDir(config, isPublish); string extraPropertiesForDBP = string.Empty; if (useArtifacts) @@ -197,7 +197,7 @@ public async Task Test_WasmStripILAfterAOT(string stripILAfterAOT, bool expectIL ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot, "strip", extraProperties: extraProperties); UpdateBrowserProgramFile(); - UpdateBrowserMainJs(DefaultTargetFramework); + UpdateBrowserMainJs(); PublishProject(info, config, new PublishOptions(UseCache: false, AssertAppBundle: false)); await RunForBuildWithDotnetRun(new BrowserRunOptions(config, ExpectedExitCode: 42)); @@ -205,7 +205,7 @@ public async Task Test_WasmStripILAfterAOT(string stripILAfterAOT, bool expectIL string projectDirectory = Path.GetDirectoryName(info.ProjectFilePath)!; string objBuildDir = Path.Combine(projectDirectory, "obj", config.ToString(), BuildTestBase.DefaultTargetFramework, "wasm", "for-publish"); - string frameworkDir = GetBinFrameworkDir(config, forPublish: true, DefaultTargetFramework); + string frameworkDir = GetBinFrameworkDir(config, forPublish: true); TestWasmStripILAfterAOTOutput(objBuildDir, frameworkDir, expectILStripping, _testOutput); } @@ -273,7 +273,7 @@ public void PublishPdb(bool copyOutputSymbolsToPublishDirectory) ProjectInfo info = CreateWasmTemplateProject(Template.WasmBrowser, config, aot: false, "publishpdb", extraProperties: extraProperties); PublishProject(info, config, new PublishOptions(ExtraMSBuildArgs: "-p:CompressionEnabled=true")); - string publishPath = GetBinFrameworkDir(config, forPublish: true, DefaultTargetFramework); + string publishPath = GetBinFrameworkDir(config, forPublish: true); AssertFile(".pdb"); AssertFile(".pdb.gz"); AssertFile(".pdb.br"); diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs index de13dfbc139079..bbdfcf6d92e51f 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs @@ -51,7 +51,7 @@ private string GetProjectName(string idPrefix, Configuration config, bool aot, b { string projectName = GetProjectName(idPrefix, config, aot, appendUnicodeToPath, avoidAotLongPathIssue); (string logPath, string nugetDir) = InitPaths(projectName); - InitProjectDir(_projectDir, DefaultTargetFramework, addNuGetSourceForLocalPackages: true); + InitProjectDir(_projectDir, addNuGetSourceForLocalPackages: true); return (projectName, logPath, nugetDir); } @@ -225,8 +225,9 @@ protected void DeleteFile(string pathRelativeToProjectDir) } } - protected void UpdateBrowserMainJs(string targetFramework, string runtimeAssetsRelativePath = DefaultRuntimeAssetsRelativePath) + protected void UpdateBrowserMainJs(string? targetFramework = null, string runtimeAssetsRelativePath = DefaultRuntimeAssetsRelativePath) { + targetFramework ??= DefaultTargetFramework; string mainJsPath = Path.Combine(_projectDir, "wwwroot", "main.js"); string mainJsContent = File.ReadAllText(mainJsPath); Version targetFrameworkVersion = new Version(targetFramework.Replace("net", "")); @@ -265,7 +266,7 @@ await BrowserRunTest($"run -c {runOptions.Configuration} --no-build", _projectDi RunHost.WebServer => await BrowserRunTest($"{s_xharnessRunnerCommand} wasm webserver --app=. --web-server-use-default-files", string.IsNullOrEmpty(runOptions.CustomBundleDir) ? - Path.GetFullPath(Path.Combine(GetBinFrameworkDir(runOptions.Configuration, forPublish: true, DefaultTargetFramework), "..")) : + Path.GetFullPath(Path.Combine(GetBinFrameworkDir(runOptions.Configuration, forPublish: true), "..")) : runOptions.CustomBundleDir, runOptions), @@ -366,8 +367,8 @@ void OnErrorMessage(string msg) } } - public string GetBinFrameworkDir(Configuration config, bool forPublish, string framework, string? projectDir = null) => - _provider.GetBinFrameworkDir(config, forPublish, framework, projectDir); + public string GetBinFrameworkDir(Configuration config, bool forPublish, string? framework = null, string? projectDir = null) => + _provider.GetBinFrameworkDir(config, forPublish, framework ?? DefaultTargetFramework, projectDir); public BuildPaths GetBuildPaths(Configuration config, bool forPublish) => _provider.GetBuildPaths(config, forPublish); diff --git a/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs b/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs index c5f51baf729afc..d5161990bce189 100644 --- a/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/WasmRunOutOfAppBundleTests.cs @@ -22,7 +22,7 @@ public async void RunOutOfAppBundle(Configuration config, bool aot) UpdateFile(Path.Combine("Common", "Program.cs"), s_mainReturns42); (string _, string output) = PublishProject(info, config, new PublishOptions(AOT: aot)); - string binFrameworkDir = GetBinFrameworkDir(config, forPublish: true, DefaultTargetFramework); + string binFrameworkDir = GetBinFrameworkDir(config, forPublish: true); string appBundleDir = Path.Combine(binFrameworkDir, ".."); string outerDir = Path.GetFullPath(Path.Combine(appBundleDir, "..")); string indexHtmlPath = Path.Combine(appBundleDir, "index.html"); From e3e941717c3422d01b3ad7d9f384c94021a040f4 Mon Sep 17 00:00:00 2001 From: kasperk81 <83082615+kasperk81@users.noreply.github.com> Date: Mon, 3 Mar 2025 10:46:00 +0000 Subject: [PATCH 7/7] updates --- .../Wasm.Browser.Bench.Sample.csproj | 2 +- .../wasi/Wasi.Build.Tests/BuildTestBase.cs | 5 +- .../wasm/Wasm.Build.Tests/BuildTestBase.cs | 4 +- .../NonWasmTemplateBuildTests.cs | 3 - .../Templates/WasmTemplateTests.cs | 4 +- .../data/{nuget10.config => nuget.config} | 1 + .../wasm/Wasm.Build.Tests/data/nuget9.config | 17 - .../Wasm.Build.Tests/data/test-main-7.0.js | 355 ------------------ 8 files changed, 9 insertions(+), 382 deletions(-) rename src/mono/wasm/Wasm.Build.Tests/data/{nuget10.config => nuget.config} (86%) delete mode 100644 src/mono/wasm/Wasm.Build.Tests/data/nuget9.config delete mode 100644 src/mono/wasm/Wasm.Build.Tests/data/test-main-7.0.js diff --git a/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj b/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj index 97de6e45fae919..9f6eee956b5136 100644 --- a/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj +++ b/src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj @@ -58,7 +58,7 @@ diff --git a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs index 7bb4d9326a0a62..2dbc48098d5378 100644 --- a/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs @@ -55,7 +55,7 @@ public abstract class BuildTestBase : IClassFixture s_buildEnv.IsWorkload; public static bool IsNotUsingWorkloads => !s_buildEnv.IsWorkload; public static string GetNuGetConfigPathFor(string targetFramework) => - Path.Combine(BuildEnvironment.TestDataPath, $"nuget{Environment.Version.Major}.config"); + Path.Combine(BuildEnvironment.TestDataPath, "nuget.config"); static BuildTestBase() { @@ -219,8 +219,7 @@ protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProp options.InitProject?.Invoke(); File.WriteAllText(Path.Combine(_projectDir, $"{buildArgs.ProjectName}.csproj"), buildArgs.ProjectFileContents); - File.Copy(Path.Combine(AppContext.BaseDirectory, - options.TargetFramework == "net7.0" ? "data/test-main-7.0.js" : "test-main.js"), + File.Copy(Path.Combine(AppContext.BaseDirectory, "test-main.js"), Path.Combine(_projectDir, "test-main.js")); } else if (_projectDir is null) diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index 9caff4c2e445cb..4155c5fbfe1d8b 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -27,6 +27,8 @@ namespace Wasm.Build.Tests public abstract class BuildTestBase : IClassFixture, IDisposable { public static readonly string DefaultTargetFramework = $"net{Environment.Version.Major}.0"; + public static readonly string PreviousTargetFramework = $"net{Environment.Version.Major - 1}.0"; + public static readonly string Previous2TargetFramework = $"net{Environment.Version.Major - 2}.0"; public static readonly string DefaultTargetFrameworkForBlazor = $"net{Environment.Version.Major}.0"; public static readonly string TargetFrameworkForTasks = $"net{Environment.Version.Major}.0"; private const string DefaultEnvironmentLocale = "en-US"; @@ -62,7 +64,7 @@ public abstract class BuildTestBase : IClassFixture s_buildEnv.IsWorkloadWithMultiThreadingForDefaultFramework; public static bool UseWebcil => s_buildEnv.UseWebcil; public static string GetNuGetConfigPathFor(string targetFramework) - => Path.Combine(BuildEnvironment.TestDataPath, targetFramework == DefaultTargetFramework ? $"nuget{Environment.Version.Major}.config" : $"nuget{Environment.Version.Major - 1}.config"); + => Path.Combine(BuildEnvironment.TestDataPath, "nuget.config"); public TProvider GetProvider() where TProvider : ProjectProviderBase => (TProvider)_providerOfBaseType; diff --git a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs index 43cb54902b1acb..c6e0134797e771 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs @@ -70,7 +70,6 @@ public NonWasmTemplateBuildTests(ITestOutputHelper output, SharedBuildPerTestCla ( EnvironmentVariables.WorkloadsTestPreviousVersions ? [ - "net6.0", s_previousTargetFramework, s_latestTargetFramework ] @@ -84,7 +83,6 @@ public void NonWasmConsoleBuild_WithoutWorkload(Configuration config, string ext => NonWasmConsoleBuild(config, extraBuildArgs, targetFramework, - // net6 is sdk would be needed to run the app shouldRun: targetFramework == s_latestTargetFramework); [Theory] @@ -93,7 +91,6 @@ public void NonWasmConsoleBuild_WithWorkload(Configuration config, string extraB => NonWasmConsoleBuild(config, extraBuildArgs, targetFramework, - // net6 is sdk would be needed to run the app shouldRun: targetFramework == s_latestTargetFramework); private void NonWasmConsoleBuild(Configuration config, diff --git a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs index d29689db5488fe..679d645130f3b1 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTests.cs @@ -112,8 +112,8 @@ private async Task BrowserRunTwiceWithAndThenWithoutBuildAsync(Configuration con if (EnvironmentVariables.WorkloadsTestPreviousVersions) { - yield return new object?[] { "-f net9.0", "net9.0", DefaultRuntimeAssetsRelativePath }; - yield return new object?[] { "-f net8.0", "net8.0", DefaultRuntimeAssetsRelativePath }; + yield return new object?[] { $"-f {PreviousTargetFramework}", PreviousTargetFramework, DefaultRuntimeAssetsRelativePath }; + yield return new object?[] { $"-f {Previous2TargetFramework}", Previous2TargetFramework, DefaultRuntimeAssetsRelativePath }; } // ActiveIssue("https://github.com/dotnet/runtime/issues/90979") diff --git a/src/mono/wasm/Wasm.Build.Tests/data/nuget10.config b/src/mono/wasm/Wasm.Build.Tests/data/nuget.config similarity index 86% rename from src/mono/wasm/Wasm.Build.Tests/data/nuget10.config rename to src/mono/wasm/Wasm.Build.Tests/data/nuget.config index bd07cf50b12f61..681e028857c2dc 100644 --- a/src/mono/wasm/Wasm.Build.Tests/data/nuget10.config +++ b/src/mono/wasm/Wasm.Build.Tests/data/nuget.config @@ -7,6 +7,7 @@ + diff --git a/src/mono/wasm/Wasm.Build.Tests/data/nuget9.config b/src/mono/wasm/Wasm.Build.Tests/data/nuget9.config deleted file mode 100644 index 8de8b907205ca6..00000000000000 --- a/src/mono/wasm/Wasm.Build.Tests/data/nuget9.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/mono/wasm/Wasm.Build.Tests/data/test-main-7.0.js b/src/mono/wasm/Wasm.Build.Tests/data/test-main-7.0.js deleted file mode 100644 index 3b32add2f39e57..00000000000000 --- a/src/mono/wasm/Wasm.Build.Tests/data/test-main-7.0.js +++ /dev/null @@ -1,355 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// -*- mode: js; js-indent-level: 4; -*- -// -// Run runtime tests under a JS shell or a browser -// -"use strict"; - - -/***************************************************************************** - * Please don't use this as template for startup code. - * There are simpler and better samples like src\mono\sample\wasm\browser\main.js - * This one is not ES6 nor CJS, doesn't use top level await and has edge case polyfills. - * It handles strange things which happen with XHarness. - ****************************************************************************/ - - -//glue code to deal with the differences between chrome, ch, d8, jsc and sm. -const is_browser = typeof window != "undefined"; -const is_node = !is_browser && typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; - -if (is_node && process.versions.node.split(".")[0] < 14) { - throw new Error(`NodeJS at '${process.execPath}' has too low version '${process.versions.node}'`); -} - -if (is_node) { - // the emscripten 3.1.34 stopped handling these when MODULARIZE is enabled - process.on('uncaughtException', function(ex) { - // ignore UnhandledPromiseRejection exceptions with exit status - if (ex !== 'unwind' && (ex.name !== "UnhandledPromiseRejection" || !ex.message.includes('"#"'))) { - throw ex; - } - }); -} - -if (typeof globalThis.crypto === 'undefined') { - // **NOTE** this is a simple insecure polyfill for testing purposes only - // /dev/random doesn't work on js shells, so define our own - // See library_fs.js:createDefaultDevices () - globalThis.crypto = { - getRandomValues: function (buffer) { - for (let i = 0; i < buffer.length; i++) - buffer[i] = (Math.random() * 256) | 0; - } - } -} - -let v8args; -if (typeof arguments !== "undefined") { - // this must be captured in top level scope in V8 - v8args = arguments; -} - -async function getArgs() { - let queryArguments = []; - if (is_node) { - queryArguments = process.argv.slice(2); - } else if (is_browser) { - // We expect to be run by tests/runtime/run.js which passes in the arguments using http parameters - const url = new URL(decodeURI(window.location)); - let urlArguments = [] - for (let param of url.searchParams) { - if (param[0] == "arg") { - urlArguments.push(param[1]); - } - } - queryArguments = urlArguments; - } else if (v8args !== undefined) { - queryArguments = Array.from(v8args); - } else if (typeof scriptArgs !== "undefined") { - queryArguments = Array.from(scriptArgs); - } else if (typeof WScript !== "undefined" && WScript.Arguments) { - queryArguments = Array.from(WScript.Arguments); - } - - let runArgs; - if (queryArguments.length > 0) { - runArgs = processArguments(queryArguments); - } else { - const response = fetch('/runArgs.json') - if (!response.ok) { - console.debug(`could not load /args.json: ${response.status}. Ignoring`); - } - runArgs = await response.json(); - } - runArgs = initRunArgs(runArgs); - - return runArgs; -} - -function initRunArgs(runArgs) { - // set defaults - runArgs.applicationArguments = runArgs.applicationArguments === undefined ? [] : runArgs.applicationArguments; - runArgs.profilers = runArgs.profilers === undefined ? [] : runArgs.profilers; - runArgs.workingDirectory = runArgs.workingDirectory === undefined ? '/' : runArgs.workingDirectory; - runArgs.environmentVariables = runArgs.environmentVariables === undefined ? {} : runArgs.environmentVariables; - runArgs.runtimeArgs = runArgs.runtimeArgs === undefined ? [] : runArgs.runtimeArgs; - runArgs.enableGC = runArgs.enableGC === undefined ? true : runArgs.enableGC; - runArgs.diagnosticTracing = runArgs.diagnosticTracing === undefined ? false : runArgs.diagnosticTracing; - runArgs.debugging = runArgs.debugging === undefined ? false : runArgs.debugging; - runArgs.configSrc = runArgs.configSrc === undefined ? './mono-config.json' : runArgs.configSrc; - // default'ing to true for tests, unless debugging - runArgs.forwardConsole = runArgs.forwardConsole === undefined ? !runArgs.debugging : runArgs.forwardConsole; - - return runArgs; -} - -function processArguments(incomingArguments) { - const runArgs = initRunArgs({}); - - console.log("Incoming arguments: " + incomingArguments.join(' ')); - while (incomingArguments && incomingArguments.length > 0) { - const currentArg = incomingArguments[0]; - if (currentArg.startsWith("--profile=")) { - const arg = currentArg.substring("--profile=".length); - runArgs.profilers.push(arg); - } else if (currentArg.startsWith("--setenv=")) { - const arg = currentArg.substring("--setenv=".length); - const parts = arg.split('='); - if (parts.length != 2) - set_exit_code(1, "Error: malformed argument: '" + currentArg); - runArgs.environmentVariables[parts[0]] = parts[1]; - } else if (currentArg.startsWith("--runtime-arg=")) { - const arg = currentArg.substring("--runtime-arg=".length); - runArgs.runtimeArgs.push(arg); - } else if (currentArg == "--disable-on-demand-gc") { - runArgs.enableGC = false; - } else if (currentArg == "--diagnostic-tracing") { - runArgs.diagnosticTracing = true; - } else if (currentArg.startsWith("--working-dir=")) { - const arg = currentArg.substring("--working-dir=".length); - runArgs.workingDirectory = arg; - } else if (currentArg == "--debug") { - runArgs.debugging = true; - } else if (currentArg == "--no-forward-console") { - runArgs.forwardConsole = false; - } else if (currentArg.startsWith("--fetch-random-delay=")) { - const arg = currentArg.substring("--fetch-random-delay=".length); - if (is_browser) { - const delayms = Number.parseInt(arg) || 100; - const originalFetch = globalThis.fetch; - globalThis.fetch = async (url, options) => { - // random sleep - const ms = delayms + (Math.random() * delayms); - console.log(`fetch ${url} started ${ms}`) - await new Promise(resolve => setTimeout(resolve, ms)); - console.log(`fetch ${url} delayed ${ms}`) - const res = await originalFetch(url, options); - console.log(`fetch ${url} done ${ms}`) - return res; - } - } else { - console.warn("--fetch-random-delay only works on browser") - } - } else if (currentArg.startsWith("--config-src=")) { - const arg = currentArg.substring("--config-src=".length); - runArgs.configSrc = arg; - } else { - break; - } - incomingArguments = incomingArguments.slice(1); - } - - runArgs.applicationArguments = incomingArguments; - // cheap way to let the testing infrastructure know we're running in a browser context (or not) - runArgs.environmentVariables["IsBrowserDomSupported"] = is_browser.toString().toLowerCase(); - runArgs.environmentVariables["IsNodeJS"] = is_node.toString().toLowerCase(); - - return runArgs; -} - -// we may have dependencies on NPM packages, depending on the test case -// some of them polyfill for browser built-in stuff -function loadNodeModules(config, require, modulesToLoad) { - modulesToLoad.split(',').forEach(module => { - const { 0: moduleName, 1: globalAlias } = module.split(':'); - - let message = `Loading npm '${moduleName}'`; - let moduleExport = require(moduleName); - - if (globalAlias) { - message += ` and attaching to global as '${globalAlias}'`; - globalThis[globalAlias] = moduleExport; - } else if (moduleName == "node-fetch") { - message += ' and attaching to global'; - globalThis.fetch = moduleExport.default; - globalThis.Headers = moduleExport.Headers; - globalThis.Request = moduleExport.Request; - globalThis.Response = moduleExport.Response; - } else if (moduleName == "node-abort-controller") { - message += ' and attaching to global'; - globalThis.AbortController = moduleExport.AbortController; - } - - console.log(message); - }); - // Must be after loading npm modules. - config.environmentVariables["IsWebSocketSupported"] = ("WebSocket" in globalThis).toString().toLowerCase(); -} - -let mono_exit = (code, reason) => { - console.log(`test-main failed early ${code} ${reason}`); -}; - -async function loadDotnet(file) { - return await import(file); -} - -const App = { - /** Runs a particular test in legacy interop tests - * @type {(method_name: string, args: any[]=, signature: any=) => return number} - */ - call_test_method: function (method_name, args, signature) { - // note: arguments here is the array of arguments passsed to this function - if ((arguments.length > 2) && (typeof (signature) !== "string")) - throw new Error("Invalid number of arguments for call_test_method"); - - const fqn = "[System.Private.Runtime.InteropServices.JavaScript.Tests]System.Runtime.InteropServices.JavaScript.Tests.HelperMarshal:" + method_name; - try { - const method = App.runtime.BINDING.bind_static_method(fqn, signature); - return method.apply(null, args || []); - } catch (exc) { - console.error("exception thrown in", fqn); - throw exc; - } - }, - - create_function(...args) { - const code = args.pop(); - const arg_count = args.length; - args.push("MONO"); - args.push("BINDING"); - args.push("INTERNAL"); - - const userFunction = new Function(...args, code); - return function (...args) { - args[arg_count + 0] = globalThis.App.runtime.MONO; - args[arg_count + 1] = globalThis.App.runtime.BINDING; - args[arg_count + 2] = globalThis.App.runtime.INTERNAL; - return userFunction(...args); - }; - }, - - invoke_js(js_code) { - const closedEval = function (Module, MONO, BINDING, INTERNAL, code) { - return eval(code); - }; - const res = closedEval(globalThis.App.runtime.Module, globalThis.App.runtime.MONO, globalThis.App.runtime.BINDING, globalThis.App.runtime.INTERNAL, js_code); - return (res === undefined || res === null || typeof res === "string") - ? null - : res.toString(); - } -}; -globalThis.App = App; // Necessary as System.Runtime.InteropServices.JavaScript.Tests.MarshalTests (among others) call the App.call_test_method directly - -async function run() { - try { - const { dotnet, exit, INTERNAL } = await loadDotnet('./dotnet.js'); - mono_exit = exit; - - const runArgs = await getArgs(); - if (runArgs.applicationArguments.length == 0) { - mono_exit(1, "Missing required --run argument"); - return; - } - console.log("Application arguments: " + runArgs.applicationArguments.join(' ')); - - dotnet - .withVirtualWorkingDirectory(runArgs.workingDirectory) - .withEnvironmentVariables(runArgs.environmentVariables) - .withDiagnosticTracing(runArgs.diagnosticTracing) - .withExitCodeLogging() - .withElementOnExit(); - - if (is_node) { - dotnet - .withEnvironmentVariable("NodeJSPlatform", process.platform) - .withAsyncFlushOnExit(); - - const modulesToLoad = runArgs.environmentVariables["NPM_MODULES"]; - if (modulesToLoad) { - dotnet.withModuleConfig({ - onConfigLoaded: (config) => { - loadNodeModules(config, INTERNAL.require, modulesToLoad) - } - }) - } - } - if (is_browser) { - dotnet.withEnvironmentVariable("IsWebSocketSupported", "true"); - } - if (runArgs.runtimeArgs.length > 0) { - dotnet.withRuntimeOptions(runArgs.runtimeArgs); - } - if (runArgs.debugging) { - dotnet.withDebugging(-1); - dotnet.withWaitingForDebugger(-1); - } - if (runArgs.forwardConsole) { - dotnet.withConsoleForwarding(); - } - App.runtime = await dotnet.create(); - App.runArgs = runArgs - - console.info("Initializing....."); - - for (let i = 0; i < runArgs.profilers.length; ++i) { - const init = App.runtime.Module.cwrap('mono_wasm_load_profiler_' + runArgs.profilers[i], 'void', ['string']); - init(""); - } - - - if (runArgs.applicationArguments[0] == "--regression") { - const exec_regression = App.runtime.Module.cwrap('mono_wasm_exec_regression', 'number', ['number', 'string']); - - let res = 0; - try { - res = exec_regression(10, runArgs.applicationArguments[1]); - console.log("REGRESSION RESULT: " + res); - } catch (e) { - console.error("ABORT: " + e); - console.error(e.stack); - res = 1; - } - - if (res) mono_exit(1, "REGRESSION TEST FAILED"); - - return; - } - - if (runArgs.applicationArguments[0] == "--run") { - // Run an exe - if (runArgs.applicationArguments.length == 1) { - mono_exit(1, "Error: Missing main executable argument."); - return; - } - try { - const main_assembly_name = runArgs.applicationArguments[1]; - const app_args = runArgs.applicationArguments.slice(2); - const result = await App.runtime.runMain(main_assembly_name, app_args); - mono_exit(result); - } catch (error) { - if (error.name != "ExitStatus") { - mono_exit(1, error); - } - } - } else { - mono_exit(1, "Unhandled argument: " + runArgs.applicationArguments[0]); - } - } catch (err) { - mono_exit(1, err) - } -} - -run(); \ No newline at end of file