Skip to content

Commit c40c261

Browse files
authored
[wasm] Stop hardcoding TFM in Wasm.Build.Tests (#112955)
1 parent 367cf39 commit c40c261

File tree

15 files changed

+47
-412
lines changed

15 files changed

+47
-412
lines changed

src/mono/sample/wasm/browser-bench/Wasm.Browser.Bench.Sample.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858

5959
<Target Name="SetNugetConfigContent">
6060
<GetNugetConfigTask
61-
InputFile="$(MonoProjectRoot)wasm/Wasm.Build.Tests/data/nuget10.config"
61+
InputFile="$(MonoProjectRoot)wasm\Wasm.Build.Tests\data\nuget.config"
6262
ArtifactsDir="$(ArtifactsDir)"
6363
Configuration="$(Configuration)">
6464
<Output TaskParameter="NugetConfigContent" PropertyName="NugetConfigContent"/>

src/mono/wasi/Wasi.Build.Tests/BuildTestBase.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace Wasm.Build.Tests
2626
{
2727
public abstract class BuildTestBase : IClassFixture<SharedBuildPerTestClassFixture>, IDisposable
2828
{
29-
public const string DefaultTargetFramework = "net10.0";
29+
public static readonly string DefaultTargetFramework = $"net{Environment.Version.Major}.0";
3030
protected static readonly bool s_skipProjectCleanup;
3131
protected static readonly string s_xharnessRunnerCommand;
3232
protected string? _projectDir;
@@ -55,7 +55,7 @@ public abstract class BuildTestBase : IClassFixture<SharedBuildPerTestClassFixtu
5555
public static bool IsUsingWorkloads => s_buildEnv.IsWorkload;
5656
public static bool IsNotUsingWorkloads => !s_buildEnv.IsWorkload;
5757
public static string GetNuGetConfigPathFor(string targetFramework) =>
58-
Path.Combine(BuildEnvironment.TestDataPath, "nuget10.config");
58+
Path.Combine(BuildEnvironment.TestDataPath, "nuget.config");
5959

6060
static BuildTestBase()
6161
{
@@ -143,8 +143,9 @@ protected void InitPaths(string id, string? projectParentDir = null)
143143
Directory.CreateDirectory(_logPath);
144144
}
145145

146-
protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = false, string targetFramework = DefaultTargetFramework)
146+
protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = false, string? targetFramework = null)
147147
{
148+
targetFramework ??= DefaultTargetFramework;
148149
Directory.CreateDirectory(dir);
149150
File.WriteAllText(Path.Combine(dir, "Directory.Build.props"), s_buildEnv.DirectoryBuildPropsContents);
150151
File.WriteAllText(Path.Combine(dir, "Directory.Build.targets"), s_buildEnv.DirectoryBuildTargetsContents);
@@ -164,7 +165,7 @@ protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages =
164165
}
165166
}
166167

167-
protected const string SimpleProjectTemplate =
168+
protected static readonly string SimpleProjectTemplate =
168169
@$"<Project Sdk=""Microsoft.NET.Sdk"">
169170
<PropertyGroup>
170171
<TargetFramework>{DefaultTargetFramework}</TargetFramework>
@@ -178,8 +179,9 @@ protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages =
178179
##INSERT_AT_END##
179180
</Project>";
180181

181-
protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProperties="", string extraItems="", string insertAtEnd="", string projectTemplate=SimpleProjectTemplate)
182+
protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProperties="", string extraItems="", string insertAtEnd="")
182183
{
184+
string projectTemplate = SimpleProjectTemplate;
183185
if (buildArgs.AOT)
184186
{
185187
extraProperties = $"{extraProperties}\n<RunAOTCompilation>true</RunAOTCompilation>";
@@ -217,8 +219,7 @@ protected static BuildArgs ExpandBuildArgs(BuildArgs buildArgs, string extraProp
217219
options.InitProject?.Invoke();
218220

219221
File.WriteAllText(Path.Combine(_projectDir, $"{buildArgs.ProjectName}.csproj"), buildArgs.ProjectFileContents);
220-
File.Copy(Path.Combine(AppContext.BaseDirectory,
221-
options.TargetFramework == "net7.0" ? "data/test-main-7.0.js" : "test-main.js"),
222+
File.Copy(Path.Combine(AppContext.BaseDirectory, "test-main.js"),
222223
Path.Combine(_projectDir, "test-main.js"));
223224
}
224225
else if (_projectDir is null)
@@ -461,15 +462,17 @@ private string FindSubDirIgnoringCase(string parentDir, string dirName)
461462
return first ?? Path.Combine(parentDir, dirName);
462463
}
463464

464-
protected string GetBinDir(string config, string targetFramework=DefaultTargetFramework, string? baseDir=null)
465+
protected string GetBinDir(string config, string? targetFramework = null, string? baseDir=null)
465466
{
467+
targetFramework ??= DefaultTargetFramework;
466468
var dir = baseDir ?? _projectDir;
467469
Assert.NotNull(dir);
468470
return Path.Combine(dir!, "bin", config, targetFramework, BuildEnvironment.DefaultRuntimeIdentifier);
469471
}
470472

471-
protected string GetObjDir(string config, string targetFramework=DefaultTargetFramework, string? baseDir=null)
473+
protected string GetObjDir(string config, string? targetFramework = null, string? baseDir=null)
472474
{
475+
targetFramework ??= DefaultTargetFramework;
473476
var dir = baseDir ?? _projectDir;
474477
Assert.NotNull(dir);
475478
return Path.Combine(dir!, "obj", config, targetFramework, BuildEnvironment.DefaultRuntimeIdentifier);

src/mono/wasi/Wasi.Build.Tests/WasiLibraryModeTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void LibraryModeBuild(string sdk, bool hasWasmAppBundle)
3131
$"""
3232
<Project Sdk="{sdk}">
3333
<PropertyGroup>
34-
<TargetFramework>net10.0</TargetFramework>
34+
<TargetFramework>{DefaultTargetFramework}</TargetFramework>
3535
<RuntimeIdentifier>wasi-wasm</RuntimeIdentifier>
3636
<WasmSingleFileBundle>true</WasmSingleFileBundle>
3737
<OutputType>Library</OutputType>

src/mono/wasm/Wasm.Build.Tests/Blazor/BlazorWasmTestBase.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ protected override void OnAfterRender(bool firstRender)
6767
protected void UpdateHomePage() =>
6868
UpdateFile(Path.Combine("Pages", "Home.razor"), blazorHomePageReplacements);
6969

70-
public void InitBlazorWasmProjectDir(string id, string targetFramework = DefaultTargetFrameworkForBlazor)
70+
public void InitBlazorWasmProjectDir(string id, string? targetFramework = null)
7171
{
72+
targetFramework ??= DefaultTargetFrameworkForBlazor;
7273
InitPaths(id);
7374
if (Directory.Exists(_projectDir))
7475
Directory.Delete(_projectDir, recursive: true);
@@ -220,6 +221,6 @@ public override async Task<RunResult> RunForPublishWithWebServer(RunOptions runO
220221
return serverEnvironment;
221222
}
222223

223-
public string GetBlazorBinFrameworkDir(Configuration config, bool forPublish, string framework = DefaultTargetFrameworkForBlazor, string? projectDir = null)
224-
=> _provider.GetBinFrameworkDir(config: config, forPublish: forPublish, framework: framework, projectDir: projectDir);
224+
public string GetBlazorBinFrameworkDir(Configuration config, bool forPublish, string? framework = null, string? projectDir = null)
225+
=> _provider.GetBinFrameworkDir(config: config, forPublish: forPublish, framework: framework ?? DefaultTargetFrameworkForBlazor, projectDir: projectDir);
225226
}

src/mono/wasm/Wasm.Build.Tests/BrowserStructures/BuildOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public BuildOptions(
1313
bool IsPublish = false,
1414
bool AOT = false,
1515
NativeFilesType ExpectedFileType = NativeFilesType.FromRuntimePack,
16-
string TargetFramework = BuildTestBase.DefaultTargetFramework,
16+
string? TargetFramework = null,
1717
GlobalizationMode GlobalizationMode = GlobalizationMode.Sharded,
1818
string CustomIcuFile = "",
1919
bool UseCache = true,
@@ -29,9 +29,9 @@ public BuildOptions(
2929
bool FeaturePerfTracing = false
3030
) : base(
3131
IsPublish,
32+
TargetFramework ?? BuildTestBase.DefaultTargetFramework,
3233
AOT,
3334
ExpectedFileType,
34-
TargetFramework,
3535
GlobalizationMode,
3636
CustomIcuFile,
3737
UseCache,

src/mono/wasm/Wasm.Build.Tests/BrowserStructures/MSBuildOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ namespace Wasm.Build.Tests;
1010
public abstract record MSBuildOptions
1111
(
1212
bool IsPublish,
13+
string TargetFramework,
1314
bool AOT = false,
1415
NativeFilesType ExpectedFileType = NativeFilesType.FromRuntimePack,
15-
string TargetFramework = BuildTestBase.DefaultTargetFramework,
1616
GlobalizationMode GlobalizationMode = GlobalizationMode.Sharded,
1717
string CustomIcuFile = "",
1818
bool UseCache = true,

src/mono/wasm/Wasm.Build.Tests/BrowserStructures/PublishOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public PublishOptions(
1616
bool IsPublish = true,
1717
bool AOT = false,
1818
NativeFilesType ExpectedFileType = NativeFilesType.FromRuntimePack,
19-
string TargetFramework = BuildTestBase.DefaultTargetFramework,
19+
string? TargetFramework = null,
2020
GlobalizationMode GlobalizationMode = GlobalizationMode.Sharded,
2121
string CustomIcuFile = "",
2222
bool UseCache = true,
@@ -34,9 +34,9 @@ public PublishOptions(
3434
bool FeaturePerfTracing = false
3535
) : base(
3636
IsPublish,
37+
TargetFramework ?? BuildTestBase.DefaultTargetFramework,
3738
AOT,
3839
ExpectedFileType,
39-
TargetFramework,
4040
GlobalizationMode,
4141
CustomIcuFile,
4242
UseCache,

src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ namespace Wasm.Build.Tests
2626
{
2727
public abstract class BuildTestBase : IClassFixture<SharedBuildPerTestClassFixture>, IDisposable
2828
{
29-
public const string DefaultTargetFramework = "net10.0";
30-
public const string DefaultTargetFrameworkForBlazor = "net10.0";
31-
public const string TargetFrameworkForTasks = "net10.0";
29+
public static readonly string DefaultTargetFramework = $"net{Environment.Version.Major}.0";
30+
public static readonly string PreviousTargetFramework = $"net{Environment.Version.Major - 1}.0";
31+
public static readonly string Previous2TargetFramework = $"net{Environment.Version.Major - 2}.0";
32+
public static readonly string DefaultTargetFrameworkForBlazor = $"net{Environment.Version.Major}.0";
33+
public static readonly string TargetFrameworkForTasks = $"net{Environment.Version.Major}.0";
3234
private const string DefaultEnvironmentLocale = "en-US";
3335
protected static readonly string s_unicodeChars = "\u9FC0\u8712\u679B\u906B\u486B\u7149";
3436
protected static readonly bool s_skipProjectCleanup;
@@ -62,7 +64,7 @@ public abstract class BuildTestBase : IClassFixture<SharedBuildPerTestClassFixtu
6264
public static bool IsWorkloadWithMultiThreadingForDefaultFramework => s_buildEnv.IsWorkloadWithMultiThreadingForDefaultFramework;
6365
public static bool UseWebcil => s_buildEnv.UseWebcil;
6466
public static string GetNuGetConfigPathFor(string targetFramework)
65-
=> Path.Combine(BuildEnvironment.TestDataPath, targetFramework == "net10.0" ? "nuget10.config" : "nuget9.config");
67+
=> Path.Combine(BuildEnvironment.TestDataPath, "nuget.config");
6668

6769
public TProvider GetProvider<TProvider>() where TProvider : ProjectProviderBase
6870
=> (TProvider)_providerOfBaseType;
@@ -230,8 +232,9 @@ private string GetBinlogMessageContext(TextNode node)
230232
return (_logPath, _nugetPackagesDir);
231233
}
232234

233-
protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = true, string targetFramework = DefaultTargetFramework)
235+
protected void InitProjectDir(string dir, bool addNuGetSourceForLocalPackages = true, string? targetFramework = null)
234236
{
237+
targetFramework ??= DefaultTargetFramework;
235238
if (Directory.Exists(dir))
236239
Directory.Delete(dir, recursive: true);
237240
Directory.CreateDirectory(dir);

src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,18 +162,18 @@ public BuildEnvironment()
162162
Directory.CreateDirectory(TmpPath);
163163
}
164164

165-
public string GetRuntimePackVersion(string tfm = BuildTestBase.DefaultTargetFramework)
165+
public string GetRuntimePackVersion(string tfm)
166166
=> s_runtimePackVersions.TryGetValue(tfm, out string? version)
167167
? version
168168
: throw new ArgumentException($"No runtime pack version found for tfm={tfm} .");
169169

170-
public string GetRuntimePackDir(string tfm = BuildTestBase.DefaultTargetFramework, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded)
170+
public string GetRuntimePackDir(string tfm, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded)
171171
=> Path.Combine(WorkloadPacksDir,
172172
runtimeType is RuntimeVariant.SingleThreaded
173173
? $"Microsoft.NETCore.App.Runtime.Mono.{DefaultRuntimeIdentifier}"
174174
: $"Microsoft.NETCore.App.Runtime.Mono.multithread.{DefaultRuntimeIdentifier}",
175175
GetRuntimePackVersion(tfm));
176-
public string GetRuntimeNativeDir(string tfm = BuildTestBase.DefaultTargetFramework, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded)
176+
public string GetRuntimeNativeDir(string tfm, RuntimeVariant runtimeType = RuntimeVariant.SingleThreaded)
177177
=> Path.Combine(GetRuntimePackDir(tfm, runtimeType), "runtimes", DefaultRuntimeIdentifier, "native");
178178
public bool IsMultiThreadingRuntimePackAvailableFor(string tfm)
179179
=> IsWorkload && File.Exists(Path.Combine(GetRuntimeNativeDir(tfm, RuntimeVariant.MultiThreaded), "dotnet.native.worker.mjs"));

src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4+
using System;
45
using System.Collections.Generic;
56
using System.IO;
67
using System.Linq;
@@ -23,10 +24,10 @@ public NonWasmTemplateBuildTests(ITestOutputHelper output, SharedBuildPerTestCla
2324
// So, copy the reference for latest TFM, and add that back with the
2425
// TFM=DefaultTargetFramework
2526
//
26-
// This is useful for the case when we are on tfm=net10.0, but sdk, and packages
27-
// are really 10.0 .
28-
private const string s_latestTargetFramework = "net10.0";
29-
private const string s_previousTargetFramework = "net9.0";
27+
// This is useful for the case when we are on latest TFM, but sdk, and packages
28+
// are really the previous version .
29+
private static readonly string s_latestTargetFramework = $"net{Environment.Version.Major}.0";
30+
private static readonly string s_previousTargetFramework = $"net{Environment.Version.Major - 1}.0";
3031
private static string s_directoryBuildTargetsForPreviousTFM =
3132
$$"""
3233
<Project>
@@ -69,7 +70,6 @@ public NonWasmTemplateBuildTests(ITestOutputHelper output, SharedBuildPerTestCla
6970
(
7071
EnvironmentVariables.WorkloadsTestPreviousVersions
7172
? [
72-
"net6.0",
7373
s_previousTargetFramework,
7474
s_latestTargetFramework
7575
]
@@ -83,7 +83,6 @@ public void NonWasmConsoleBuild_WithoutWorkload(Configuration config, string ext
8383
=> NonWasmConsoleBuild(config,
8484
extraBuildArgs,
8585
targetFramework,
86-
// net6 is sdk would be needed to run the app
8786
shouldRun: targetFramework == s_latestTargetFramework);
8887

8988
[Theory]
@@ -92,7 +91,6 @@ public void NonWasmConsoleBuild_WithWorkload(Configuration config, string extraB
9291
=> NonWasmConsoleBuild(config,
9392
extraBuildArgs,
9493
targetFramework,
95-
// net6 is sdk would be needed to run the app
9694
shouldRun: targetFramework == s_latestTargetFramework);
9795

9896
private void NonWasmConsoleBuild(Configuration config,

0 commit comments

Comments
 (0)