From 0f6b9b137212365f3d6d0b80079969df624385e9 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz <32700855+ilonatommy@users.noreply.github.com> Date: Wed, 1 Mar 2023 14:26:28 +0000 Subject: [PATCH 1/9] Fixed https://github.com/dotnet/runtime/issues/78953. --- src/tasks/Common/Utils.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tasks/Common/Utils.cs b/src/tasks/Common/Utils.cs index 8ed6c2c13711e..b0c668db4292c 100644 --- a/src/tasks/Common/Utils.cs +++ b/src/tasks/Common/Utils.cs @@ -64,6 +64,9 @@ static string CreateTemporaryBatchFile(string command) using StreamWriter sw = new(file); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { + // set encoding to UTF-8 -> full Unicode support is needed for usernames - + // `command` contains tmp dir path with the username + sw.WriteLine("chcp 65001>nul"); sw.WriteLine("setlocal"); sw.WriteLine("set errorlevel=dummy"); sw.WriteLine("set errorlevel="); From 8456079eef15614d7e3de3b0a0cc24ed43d5ee41 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz Date: Thu, 2 Mar 2023 16:57:09 +0100 Subject: [PATCH 2/9] New wbt publish test case: Unicode sign in project name. --- .../Wasm.Build.Tests/BuildPublishTests.cs | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs index c798c79cd041f..db8e66784a003 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs @@ -15,17 +15,23 @@ namespace Wasm.Build.Tests { public class BuildPublishTests : NativeRebuildTestsBase { + private readonly char unicodeChar = '煉'; + public BuildPublishTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) : base(output, buildContext) { } [Theory] - [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Release")] - [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Debug")] - public void BuildThenPublishNoAOT(BuildArgs buildArgs, RunHost host, string id) + [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Release", parameters: new object[] { false })] + [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Debug", parameters: new object[] { false })] + [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Release", parameters: new object[] { true })] + [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Debug", parameters: new object[] { true })] + public void BuildThenPublishNoAOT(BuildArgs buildArgs, bool testsUnicode, RunHost host, string id) { - string projectName = $"build_publish_{buildArgs.Config}"; + string projectName = testsUnicode ? + $"build_publish_{buildArgs.Config}{unicodeChar}" : + $"build_publish_{buildArgs.Config}"; buildArgs = buildArgs with { ProjectName = projectName }; buildArgs = ExpandBuildArgs(buildArgs); @@ -70,11 +76,15 @@ void Run() => RunAndTestWasmApp( } [Theory] - [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Release")] - [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Debug")] - public void BuildThenPublishWithAOT(BuildArgs buildArgs, RunHost host, string id) + [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Release", parameters: new object[] { false })] + [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Debug", parameters: new object[] { false })] + [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Release", parameters: new object[] { true })] + [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Debug", parameters: new object[] { true })] + public void BuildThenPublishWithAOT(BuildArgs buildArgs, bool testsUnicode, RunHost host, string id) { - string projectName = $"build_publish_{buildArgs.Config}"; + string projectName = testsUnicode ? + $"build_publish_{buildArgs.Config}{unicodeChar}" : + $"build_publish_{buildArgs.Config}"; buildArgs = buildArgs with { ProjectName = projectName }; buildArgs = ExpandBuildArgs(buildArgs, extraProperties: "<_WasmDevel>true"); From 54c0affd19e48d3fc4a6b031d70cd9762eb4c4a1 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz Date: Fri, 3 Mar 2023 10:30:35 +0100 Subject: [PATCH 3/9] Removed duplicated, unused function + addressed @akoeplinger review. --- src/tasks/Common/Utils.cs | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/tasks/Common/Utils.cs b/src/tasks/Common/Utils.cs index b0c668db4292c..4237b7d39ea8e 100644 --- a/src/tasks/Common/Utils.cs +++ b/src/tasks/Common/Utils.cs @@ -66,7 +66,7 @@ static string CreateTemporaryBatchFile(string command) { // set encoding to UTF-8 -> full Unicode support is needed for usernames - // `command` contains tmp dir path with the username - sw.WriteLine("chcp 65001>nul"); + sw.WriteLine("%SystemRoot%\System32\chcp.com 65001>nul"); sw.WriteLine("setlocal"); sw.WriteLine("set errorlevel=dummy"); sw.WriteLine("set errorlevel="); @@ -190,29 +190,6 @@ public static (int, string) TryRunProcess( return (process.ExitCode, outputBuilder.ToString().Trim('\r', '\n')); } - internal static string CreateTemporaryBatchFile(string command) - { - string extn = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".cmd" : ".sh"; - string file = Path.Combine(Path.GetTempPath(), $"tmp{Guid.NewGuid():N}{extn}"); - - using StreamWriter sw = new(file); - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - sw.WriteLine("setlocal"); - sw.WriteLine("set errorlevel=dummy"); - sw.WriteLine("set errorlevel="); - } - else - { - // Use sh rather than bash, as not all 'nix systems necessarily have Bash installed - sw.WriteLine("#!/bin/sh"); - } - - sw.WriteLine(command); - - return file; - } - public static bool CopyIfDifferent(string src, string dst, bool useHash) { if (!File.Exists(src)) From 1645c72b3c963b5399cdd0846bb8522a8f4afcc8 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz Date: Fri, 3 Mar 2023 11:32:19 +0100 Subject: [PATCH 4/9] Fix. --- src/tasks/Common/Utils.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/Common/Utils.cs b/src/tasks/Common/Utils.cs index 4237b7d39ea8e..4833b4cd19b0c 100644 --- a/src/tasks/Common/Utils.cs +++ b/src/tasks/Common/Utils.cs @@ -66,7 +66,7 @@ static string CreateTemporaryBatchFile(string command) { // set encoding to UTF-8 -> full Unicode support is needed for usernames - // `command` contains tmp dir path with the username - sw.WriteLine("%SystemRoot%\System32\chcp.com 65001>nul"); + sw.WriteLine(@"%SystemRoot%\System32\chcp.com 65001>nul"); sw.WriteLine("setlocal"); sw.WriteLine("set errorlevel=dummy"); sw.WriteLine("set errorlevel="); From 5af20123fb049ec7d6e851d293d3f7941584ceb9 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz <32700855+ilonatommy@users.noreply.github.com> Date: Mon, 6 Mar 2023 15:30:03 +0000 Subject: [PATCH 5/9] Revert AOT tests to fix them in a follow-up. --- src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs index 30166c81a8046..15777cc72bf5a 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs @@ -75,15 +75,11 @@ void Run() => RunAndTestWasmApp( } [Theory] - [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Release", parameters: new object[] { false })] - [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Debug", parameters: new object[] { false })] - [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Release", parameters: new object[] { true })] - [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Debug", parameters: new object[] { true })] - public void BuildThenPublishWithAOT(BuildArgs buildArgs, bool testsUnicode, RunHost host, string id) + [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Release")] + [BuildAndRun(host: RunHost.Chrome, aot: true, config: "Debug")] + public void BuildThenPublishWithAOT(BuildArgs buildArgs, RunHost host, string id) { - string projectName = testsUnicode ? - $"build_publish_{buildArgs.Config}{unicodeChar}" : - $"build_publish_{buildArgs.Config}"; + string projectName = $"build_publish_{buildArgs.Config}"; buildArgs = buildArgs with { ProjectName = projectName }; buildArgs = ExpandBuildArgs(buildArgs, extraProperties: "<_WasmDevel>true"); From 805465f7315943104f823af5b52152f23dc4024d Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz <32700855+ilonatommy@users.noreply.github.com> Date: Mon, 6 Mar 2023 16:00:34 +0000 Subject: [PATCH 6/9] Test Blazor as well. --- .../Blazor/BuildPublishTests.cs | 24 ++++++++++++------- .../Wasm.Build.Tests/BuildPublishTests.cs | 4 +--- .../wasm/Wasm.Build.Tests/BuildTestBase.cs | 1 + 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs index 63e2caeb46b85..d817dbec8dbce 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs @@ -24,11 +24,15 @@ public BuildPublishTests(ITestOutputHelper output, SharedBuildPerTestClassFixtur } [Theory, TestCategory("no-workload")] - [InlineData("Debug")] - [InlineData("Release")] - public void DefaultTemplate_WithoutWorkload(string config) + [InlineData("Debug", true)] + [InlineData("Release", false)] + [InlineData("Debug", false)] + [InlineData("Release", true)] + public void DefaultTemplate_WithoutWorkload(string config, bool testsUnicode) { - string id = $"blz_no_workload_{config}_{Path.GetRandomFileName()}"; + string id = testsUnicode ? + $"blz_no_workload_{config}_{Path.GetRandomFileName()}{s_unicodeChar}" : + $"blz_no_workload_{config}_{Path.GetRandomFileName()}"; CreateBlazorWasmTemplateProject(id); // Build @@ -41,11 +45,15 @@ public void DefaultTemplate_WithoutWorkload(string config) } [Theory] - [InlineData("Debug")] - [InlineData("Release")] - public void DefaultTemplate_NoAOT_WithWorkload(string config) + [InlineData("Debug", true)] + [InlineData("Release", false)] + [InlineData("Debug", false)] + [InlineData("Release", true)] + public void DefaultTemplate_NoAOT_WithWorkload(string config, bool testsUnicode) { - string id = $"blz_no_aot_{config}_{Path.GetRandomFileName()}"; + string id = testsUnicode ? + $"blz_no_aot_{config}_{Path.GetRandomFileName()}{s_unicodeChar}" : + $"blz_no_aot_{config}_{Path.GetRandomFileName()}"; CreateBlazorWasmTemplateProject(id); BlazorBuild(new BlazorBuildOptions(id, config, NativeFilesType.FromRuntimePack)); diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs index 15777cc72bf5a..f0a2428b08632 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs @@ -15,8 +15,6 @@ namespace Wasm.Build.Tests { public class BuildPublishTests : NativeRebuildTestsBase { - private readonly char unicodeChar = '煉'; - public BuildPublishTests(ITestOutputHelper output, SharedBuildPerTestClassFixture buildContext) : base(output, buildContext) { @@ -30,7 +28,7 @@ public BuildPublishTests(ITestOutputHelper output, SharedBuildPerTestClassFixtur public void BuildThenPublishNoAOT(BuildArgs buildArgs, bool testsUnicode, RunHost host, string id) { string projectName = testsUnicode ? - $"build_publish_{buildArgs.Config}{unicodeChar}" : + $"build_publish_{buildArgs.Config}{s_unicodeChar}" : $"build_publish_{buildArgs.Config}"; buildArgs = buildArgs with { ProjectName = projectName }; diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index 2291b0dc1d96f..fb56dc88049a3 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -31,6 +31,7 @@ public abstract class BuildTestBase : IClassFixture Date: Tue, 7 Mar 2023 08:28:22 +0000 Subject: [PATCH 7/9] @radical's review: test reduction + relinking --- .../Blazor/BuildPublishTests.cs | 26 +++++++------------ .../Wasm.Build.Tests/BuildPublishTests.cs | 12 +++------ 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs index d817dbec8dbce..581f27b3460be 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs @@ -24,15 +24,11 @@ public BuildPublishTests(ITestOutputHelper output, SharedBuildPerTestClassFixtur } [Theory, TestCategory("no-workload")] - [InlineData("Debug", true)] - [InlineData("Release", false)] - [InlineData("Debug", false)] - [InlineData("Release", true)] - public void DefaultTemplate_WithoutWorkload(string config, bool testsUnicode) + [InlineData("Debug")] + [InlineData("Release")] + public void DefaultTemplate_WithoutWorkload(string config) { - string id = testsUnicode ? - $"blz_no_workload_{config}_{Path.GetRandomFileName()}{s_unicodeChar}" : - $"blz_no_workload_{config}_{Path.GetRandomFileName()}"; + string id = $"blz_no_workload_{config}_{Path.GetRandomFileName()}_{s_unicodeChar}"; CreateBlazorWasmTemplateProject(id); // Build @@ -45,15 +41,11 @@ public void DefaultTemplate_WithoutWorkload(string config, bool testsUnicode) } [Theory] - [InlineData("Debug", true)] - [InlineData("Release", false)] - [InlineData("Debug", false)] - [InlineData("Release", true)] - public void DefaultTemplate_NoAOT_WithWorkload(string config, bool testsUnicode) + [InlineData("Debug")] + [InlineData("Release")] + public void DefaultTemplate_NoAOT_WithWorkload(string config) { - string id = testsUnicode ? - $"blz_no_aot_{config}_{Path.GetRandomFileName()}{s_unicodeChar}" : - $"blz_no_aot_{config}_{Path.GetRandomFileName()}"; + string id = $"blz_no_aot_{config}_{Path.GetRandomFileName()}_{s_unicodeChar}"; CreateBlazorWasmTemplateProject(id); BlazorBuild(new BlazorBuildOptions(id, config, NativeFilesType.FromRuntimePack)); @@ -99,7 +91,7 @@ public void DefaultTemplate_NoAOT_WithWorkload(string config, bool testsUnicode) public async Task WithDllImportInMainAssembly(string config, bool build, bool publish) { // Based on https://github.com/dotnet/runtime/issues/59255 - string id = $"blz_dllimp_{config}_"; + string id = $"blz_dllimp_{config}_{s_unicodeChar}"; if (build && publish) id += "build_then_publish"; else if (build) diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs index f0a2428b08632..dd05980878209 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildPublishTests.cs @@ -21,15 +21,11 @@ public BuildPublishTests(ITestOutputHelper output, SharedBuildPerTestClassFixtur } [Theory] - [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Release", parameters: new object[] { false })] - [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Debug", parameters: new object[] { false })] - [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Release", parameters: new object[] { true })] - [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Debug", parameters: new object[] { true })] - public void BuildThenPublishNoAOT(BuildArgs buildArgs, bool testsUnicode, RunHost host, string id) + [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Release")] + [BuildAndRun(host: RunHost.Chrome, aot: false, config: "Debug")] + public void BuildThenPublishNoAOT(BuildArgs buildArgs, RunHost host, string id) { - string projectName = testsUnicode ? - $"build_publish_{buildArgs.Config}{s_unicodeChar}" : - $"build_publish_{buildArgs.Config}"; + string projectName = $"build_publish_{buildArgs.Config}{s_unicodeChar}"; buildArgs = buildArgs with { ProjectName = projectName }; buildArgs = ExpandBuildArgs(buildArgs); From 36c8805917f338582483b4e7a55cb53b390e9208 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz Date: Wed, 15 Mar 2023 16:54:58 +0100 Subject: [PATCH 8/9] Block relinking tests with Unicode signs. --- src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs index 5064ff43542cc..2a2704c2ddc05 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs @@ -45,7 +45,10 @@ public void DefaultTemplate_WithoutWorkload(string config) [InlineData("Release")] public void DefaultTemplate_NoAOT_WithWorkload(string config) { - string id = $"blz_no_aot_{config}_{Path.GetRandomFileName()}_{s_unicodeChar}"; + // disable relinking tests for Unicode: github.com/emscripten-core/emscripten/issues/17817 + string id = config == "Release" ? + $"blz_no_aot_{config}_{Path.GetRandomFileName()}" : + $"blz_no_aot_{config}_{Path.GetRandomFileName()}_{s_unicodeChar}"; CreateBlazorWasmTemplateProject(id); BlazorBuild(new BlazorBuildOptions(id, config, NativeFilesType.FromRuntimePack)); From 6a4c8743fcfa31e4b99a8d65ec3455dca673bd67 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz Date: Thu, 16 Mar 2023 08:45:28 +0100 Subject: [PATCH 9/9] Added active issue link. --- src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs index 2a2704c2ddc05..c75f008b33210 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/Blazor/BuildPublishTests.cs @@ -46,6 +46,7 @@ public void DefaultTemplate_WithoutWorkload(string config) public void DefaultTemplate_NoAOT_WithWorkload(string config) { // disable relinking tests for Unicode: github.com/emscripten-core/emscripten/issues/17817 + // [ActiveIssue("https://github.com/dotnet/runtime/issues/83497")] string id = config == "Release" ? $"blz_no_aot_{config}_{Path.GetRandomFileName()}" : $"blz_no_aot_{config}_{Path.GetRandomFileName()}_{s_unicodeChar}";