From 74f7fcfd6bab9068ced3235219fa185017c488cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Thu, 14 Dec 2023 14:49:03 +0100 Subject: [PATCH 1/5] Put asset name in loaderHelpers.loadedAssemblies and check for asset name in lazy loading --- src/mono/wasm/runtime/lazyLoading.ts | 2 +- src/mono/wasm/runtime/loader/assets.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mono/wasm/runtime/lazyLoading.ts b/src/mono/wasm/runtime/lazyLoading.ts index 59c153a9d62365..55bcfd67101e8c 100644 --- a/src/mono/wasm/runtime/lazyLoading.ts +++ b/src/mono/wasm/runtime/lazyLoading.ts @@ -21,7 +21,7 @@ export async function loadLazyAssembly(assemblyNameToLoad: string): Promise f.includes(assemblyNameToLoad))) { + if (loaderHelpers.loadedAssemblies.includes(assemblyNameToLoad)) { return false; } diff --git a/src/mono/wasm/runtime/loader/assets.ts b/src/mono/wasm/runtime/loader/assets.ts index 50ad4b4c93573c..5b4b27c6996c46 100644 --- a/src/mono/wasm/runtime/loader/assets.ts +++ b/src/mono/wasm/runtime/loader/assets.ts @@ -600,7 +600,7 @@ function download_resource(asset: AssetEntryInternal): LoadingResource { totalResources.add(asset.name!); response.response.then(() => { if (asset.behavior == "assembly") { - loaderHelpers.loadedAssemblies.push(asset.resolvedUrl!); + loaderHelpers.loadedAssemblies.push(asset.name); } resourcesLoaded++; From a725130fc216863815f36c0e868ba63555ece09d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Fri, 12 Jan 2024 14:21:00 +0100 Subject: [PATCH 2/5] Update lazy loading test to match existing assembly name partially --- .../Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs | 4 ++++ .../WasmBasicTestApp/{ => App}/AppSettingsTest.cs | 0 .../WasmBasicTestApp/{ => App}/Common/Program.cs | 0 .../WasmBasicTestApp/{ => App}/Common/TestOutput.cs | 0 .../WasmBasicTestApp/{ => App}/LazyLoadingTest.cs | 9 +-------- .../{ => App}/LibraryInitializerTest.cs | 0 .../{ => App}/Properties/AssemblyInfo.cs | 0 .../{ => App}/SatelliteAssembliesTest.cs | 0 .../{ => App}/WasmBasicTestApp.csproj | 6 +++++- .../{ => App}/runtimeconfig.template.json | 0 .../WasmBasicTestApp/{ => App}/words.es-ES.resx | 0 .../testassets/WasmBasicTestApp/{ => App}/words.resx | 0 .../{ => App}/wwwroot/WasmBasicTestApp.lib.module.js | 0 .../{ => App}/wwwroot/appsettings.Development.json | 0 .../{ => App}/wwwroot/appsettings.Production.json | 0 .../{ => App}/wwwroot/appsettings.json | 0 .../WasmBasicTestApp/{ => App}/wwwroot/index.html | 0 .../WasmBasicTestApp/{ => App}/wwwroot/main.js | 2 +- .../wasm/testassets/WasmBasicTestApp/Library/Json.cs | 11 +++++++++++ .../testassets/WasmBasicTestApp/Library/Json.csproj | 7 +++++++ 20 files changed, 29 insertions(+), 10 deletions(-) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/AppSettingsTest.cs (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/Common/Program.cs (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/Common/TestOutput.cs (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/LazyLoadingTest.cs (75%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/LibraryInitializerTest.cs (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/Properties/AssemblyInfo.cs (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/SatelliteAssembliesTest.cs (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/WasmBasicTestApp.csproj (65%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/runtimeconfig.template.json (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/words.es-ES.resx (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/words.resx (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/wwwroot/WasmBasicTestApp.lib.module.js (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/wwwroot/appsettings.Development.json (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/wwwroot/appsettings.Production.json (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/wwwroot/appsettings.json (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/wwwroot/index.html (100%) rename src/mono/wasm/testassets/WasmBasicTestApp/{ => App}/wwwroot/main.js (97%) create mode 100644 src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.cs create mode 100644 src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj diff --git a/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs index 444d70228b08fa..a02c981eba0912 100644 --- a/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs @@ -28,6 +28,10 @@ protected void CopyTestAsset(string assetName, string generatedProjectNamePrefix Id = $"{generatedProjectNamePrefix ?? assetName}_{GetRandomId()}"; InitBlazorWasmProjectDir(Id); + // WasmBasicTestApp consists of App + Library projects + if (assetName == "WasmBasicTestApp") + _projectDir = Path.Combine(_projectDir!, "App"); + LogPath = Path.Combine(s_buildEnv.LogRootPath, Id); Utils.DirectoryCopy(Path.Combine(BuildEnvironment.TestAssetsPath, assetName), Path.Combine(_projectDir!)); } diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/AppSettingsTest.cs b/src/mono/wasm/testassets/WasmBasicTestApp/App/AppSettingsTest.cs similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/AppSettingsTest.cs rename to src/mono/wasm/testassets/WasmBasicTestApp/App/AppSettingsTest.cs diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/Common/Program.cs b/src/mono/wasm/testassets/WasmBasicTestApp/App/Common/Program.cs similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/Common/Program.cs rename to src/mono/wasm/testassets/WasmBasicTestApp/App/Common/Program.cs diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/Common/TestOutput.cs b/src/mono/wasm/testassets/WasmBasicTestApp/App/Common/TestOutput.cs similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/Common/TestOutput.cs rename to src/mono/wasm/testassets/WasmBasicTestApp/App/Common/TestOutput.cs diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/LazyLoadingTest.cs b/src/mono/wasm/testassets/WasmBasicTestApp/App/LazyLoadingTest.cs similarity index 75% rename from src/mono/wasm/testassets/WasmBasicTestApp/LazyLoadingTest.cs rename to src/mono/wasm/testassets/WasmBasicTestApp/App/LazyLoadingTest.cs index cdf52cb98d31c8..c8d85406412f8e 100644 --- a/src/mono/wasm/testassets/WasmBasicTestApp/LazyLoadingTest.cs +++ b/src/mono/wasm/testassets/WasmBasicTestApp/App/LazyLoadingTest.cs @@ -1,9 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using Library; using System; using System.Text.Json; -using System.Text.Json.Serialization; using System.Runtime.InteropServices.JavaScript; public partial class LazyLoadingTest @@ -16,11 +16,4 @@ public static void Run() var text = JsonSerializer.Serialize(new Person("John", "Doe"), PersonJsonSerializerContext.Default.Person); TestOutput.WriteLine(text); } - - public record Person(string FirstName, string LastName); - - [JsonSerializable(typeof(Person))] - internal partial class PersonJsonSerializerContext : JsonSerializerContext - { - } } diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/LibraryInitializerTest.cs b/src/mono/wasm/testassets/WasmBasicTestApp/App/LibraryInitializerTest.cs similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/LibraryInitializerTest.cs rename to src/mono/wasm/testassets/WasmBasicTestApp/App/LibraryInitializerTest.cs diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/Properties/AssemblyInfo.cs b/src/mono/wasm/testassets/WasmBasicTestApp/App/Properties/AssemblyInfo.cs similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/Properties/AssemblyInfo.cs rename to src/mono/wasm/testassets/WasmBasicTestApp/App/Properties/AssemblyInfo.cs diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/SatelliteAssembliesTest.cs b/src/mono/wasm/testassets/WasmBasicTestApp/App/SatelliteAssembliesTest.cs similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/SatelliteAssembliesTest.cs rename to src/mono/wasm/testassets/WasmBasicTestApp/App/SatelliteAssembliesTest.cs diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/WasmBasicTestApp.csproj b/src/mono/wasm/testassets/WasmBasicTestApp/App/WasmBasicTestApp.csproj similarity index 65% rename from src/mono/wasm/testassets/WasmBasicTestApp/WasmBasicTestApp.csproj rename to src/mono/wasm/testassets/WasmBasicTestApp/App/WasmBasicTestApp.csproj index b2cd49a5509397..04469138d98035 100644 --- a/src/mono/wasm/testassets/WasmBasicTestApp/WasmBasicTestApp.csproj +++ b/src/mono/wasm/testassets/WasmBasicTestApp/App/WasmBasicTestApp.csproj @@ -7,6 +7,10 @@ - + + + + + diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/runtimeconfig.template.json b/src/mono/wasm/testassets/WasmBasicTestApp/App/runtimeconfig.template.json similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/runtimeconfig.template.json rename to src/mono/wasm/testassets/WasmBasicTestApp/App/runtimeconfig.template.json diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/words.es-ES.resx b/src/mono/wasm/testassets/WasmBasicTestApp/App/words.es-ES.resx similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/words.es-ES.resx rename to src/mono/wasm/testassets/WasmBasicTestApp/App/words.es-ES.resx diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/words.resx b/src/mono/wasm/testassets/WasmBasicTestApp/App/words.resx similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/words.resx rename to src/mono/wasm/testassets/WasmBasicTestApp/App/words.resx diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/WasmBasicTestApp.lib.module.js b/src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/WasmBasicTestApp.lib.module.js similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/WasmBasicTestApp.lib.module.js rename to src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/WasmBasicTestApp.lib.module.js diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/appsettings.Development.json b/src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/appsettings.Development.json similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/appsettings.Development.json rename to src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/appsettings.Development.json diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/appsettings.Production.json b/src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/appsettings.Production.json similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/appsettings.Production.json rename to src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/appsettings.Production.json diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/appsettings.json b/src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/appsettings.json similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/appsettings.json rename to src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/appsettings.json diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/index.html b/src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/index.html similarity index 100% rename from src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/index.html rename to src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/index.html diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/main.js b/src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/main.js similarity index 97% rename from src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/main.js rename to src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/main.js index 8d537cbdfb4041..076f37a62a6d87 100644 --- a/src/mono/wasm/testassets/WasmBasicTestApp/wwwroot/main.js +++ b/src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/main.js @@ -79,7 +79,7 @@ try { break; case "LazyLoadingTest": if (params.get("loadRequiredAssembly") !== "false") { - await INTERNAL.loadLazyAssembly(`System.Text.Json${assemblyExtension}`); + await INTERNAL.loadLazyAssembly(`Json${assemblyExtension}`); } exports.LazyLoadingTest.Run(); exit(0); diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.cs b/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.cs new file mode 100644 index 00000000000000..cd496b96a3fc9e --- /dev/null +++ b/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.cs @@ -0,0 +1,11 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Library; + +public record Person(string FirstName, string LastName); + +[JsonSerializable(typeof(Person))] +public partial class PersonJsonSerializerContext : JsonSerializerContext +{ +} \ No newline at end of file diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj b/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj new file mode 100644 index 00000000000000..3d5e0e2093c1a9 --- /dev/null +++ b/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj @@ -0,0 +1,7 @@ + + + net9.0 + Library + true + + From 5ba146039cd6e9a9d35453a1a804b3a777bbb35a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Tue, 16 Jan 2024 11:20:34 +0100 Subject: [PATCH 3/5] Fix order of commands (change project dir after app is copied) --- .../wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs index a02c981eba0912..dc6fb9b490e7f3 100644 --- a/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/AppTestBase.cs @@ -28,12 +28,12 @@ protected void CopyTestAsset(string assetName, string generatedProjectNamePrefix Id = $"{generatedProjectNamePrefix ?? assetName}_{GetRandomId()}"; InitBlazorWasmProjectDir(Id); + LogPath = Path.Combine(s_buildEnv.LogRootPath, Id); + Utils.DirectoryCopy(Path.Combine(BuildEnvironment.TestAssetsPath, assetName), Path.Combine(_projectDir!)); + // WasmBasicTestApp consists of App + Library projects if (assetName == "WasmBasicTestApp") _projectDir = Path.Combine(_projectDir!, "App"); - - LogPath = Path.Combine(s_buildEnv.LogRootPath, Id); - Utils.DirectoryCopy(Path.Combine(BuildEnvironment.TestAssetsPath, assetName), Path.Combine(_projectDir!)); } protected void BuildProject(string configuration) From 2abfcba77f9280c82dbc2dcbdb7f4497187fad5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Wed, 17 Jan 2024 11:06:16 +0100 Subject: [PATCH 4/5] Update error message --- .../wasm/Wasm.Build.Tests/TestAppScenarios/LazyLoadingTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/LazyLoadingTests.cs b/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/LazyLoadingTests.cs index d2219e9f9e50da..8f37a47e18860a 100644 --- a/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/LazyLoadingTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/TestAppScenarios/LazyLoadingTests.cs @@ -42,6 +42,6 @@ public async Task FailOnMissingLazyAssembly() BrowserQueryString: new Dictionary { ["loadRequiredAssembly"] = "false" }, ExpectedExitCode: 1 )); - Assert.True(result.ConsoleOutput.Any(m => m.Contains("Could not load file or assembly") && m.Contains("System.Text.Json")), "The lazy loading test didn't emit expected error message"); + Assert.True(result.ConsoleOutput.Any(m => m.Contains("Could not load file or assembly") && m.Contains("Json")), "The lazy loading test didn't emit expected error message"); } } From 2a0308629790082a86283e3bd47bf3b276264a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Wed, 17 Jan 2024 11:07:27 +0100 Subject: [PATCH 5/5] Comment about assembly name --- src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj b/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj index 3d5e0e2093c1a9..6e4494931a1a3b 100644 --- a/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj +++ b/src/mono/wasm/testassets/WasmBasicTestApp/Library/Json.csproj @@ -1,4 +1,5 @@ + net9.0 Library