Skip to content

Commit fd8298e

Browse files
authored
[wasm] Wasm.Build.Tests - some cleanup to prepare for Wasi.Build.Tests, and wasi workload (#81977)
* [wasm] Extract a base class from WasmAppBuilder, for future use with WasiAppBuilder task * [wasm] RunScriptTemplate* - cleanup for use in WBT And introduce a $SDK_DIR_NAME envvar * [wasm] Wasm.Build.Tests - move some files to Common/ for use with Wasi.Build.Tests * Address review feedback from @maraf
1 parent 78f926e commit fd8298e

23 files changed

+204
-259
lines changed

src/libraries/sendtohelix-wasm.targets

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@
5555
<IncludeNodePayload Condition="'$(NeedsEMSDKNode)' == 'true' and '$(NeedsEMSDK)' != 'true'">true</IncludeNodePayload>
5656

5757
<UseDotNetCliVersionFromGlobalJson>true</UseDotNetCliVersionFromGlobalJson>
58+
59+
<SdkForWorkloadTestingDirName Condition="'$(NeedsWorkload)' == 'true' and '$(TestUsingWorkloads)' == 'true'">dotnet-latest</SdkForWorkloadTestingDirName>
60+
<SdkForWorkloadTestingDirName Condition="'$(NeedsWorkload)' == 'true' and '$(TestUsingWorkloads)' != 'true'">dotnet-none</SdkForWorkloadTestingDirName>
5861
</PropertyGroup>
5962

6063
<Import Project="$(TestArchiveRoot)**\*.helix.targets" />
@@ -120,6 +123,9 @@
120123

121124
<HelixPreCommand Condition="'$(WindowsShell)' == 'true'" Include="set &quot;BUILT_NUGETS_PATH=%HELIX_CORRELATION_PAYLOAD%/built-nugets&quot;" />
122125
<HelixPreCommand Condition="'$(WindowsShell)' != 'true'" Include="export &quot;BUILT_NUGETS_PATH=$HELIX_CORRELATION_PAYLOAD/built-nugets&quot;" />
126+
127+
<HelixPreCommand Condition="'$(WindowsShell)' == 'true'" Include="set &quot;SDK_DIR_NAME=$(SdkForWorkloadTestingDirName)&quot;" />
128+
<HelixPreCommand Condition="'$(WindowsShell)' != 'true'" Include="export &quot;SDK_DIR_NAME=$(SdkForWorkloadTestingDirName)&quot;" />
123129
</ItemGroup>
124130

125131
<PropertyGroup>

src/libraries/sendtohelix.proj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
<_TestUsingCrossProductValues Include="@(_TestUsingCrossProductValuesTemp)">
9191
<Webcil>%(_TestUsingWebcilValues.Identity)</Webcil>
9292
</_TestUsingCrossProductValues>
93-
93+
9494
<_BuildWasmAppsProjectsToBuild Include="$(PerScenarioProjectFile)">
9595
<AdditionalProperties>$(_PropertiesToPass);Scenario=BuildWasmApps;TestArchiveRuntimeFile=$(TestArchiveRuntimeFile);TestUsingWorkloads=%(_TestUsingCrossProductValues.Workloads);TestUsingWebcil=%(_TestUsingCrossProductValues.Webcil)</AdditionalProperties>
9696
<AdditionalProperties Condition="'$(NeedsToBuildWasmAppsOnHelix)' != ''">%(_BuildWasmAppsProjectsToBuild.AdditionalProperties);NeedsToBuildWasmAppsOnHelix=$(NeedsToBuildWasmAppsOnHelix)</AdditionalProperties>

src/mono/wasm/Wasm.Build.Tests/EnvironmentVariables.cs renamed to src/mono/wasm/Wasm.Build.Tests/Common/EnvironmentVariables.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ internal static class EnvironmentVariables
1818
internal static readonly string? BuiltNuGetsPath = Environment.GetEnvironmentVariable("BUILT_NUGETS_PATH");
1919
internal static readonly string? BrowserPathForTests = Environment.GetEnvironmentVariable("BROWSER_PATH_FOR_TESTS");
2020
internal static readonly bool ShowBuildOutput = Environment.GetEnvironmentVariable("SHOW_BUILD_OUTPUT") is not null;
21-
internal static readonly bool UseWebcil = Environment.GetEnvironmentVariable("USE_WEBCIL_FOR_TESTS") is "true";
21+
internal static readonly bool UseWebcil = Environment.GetEnvironmentVariable("USE_WEBCIL_FOR_TESTS") is "true";
22+
internal static readonly string? SdkDirName = Environment.GetEnvironmentVariable("SDK_DIR_NAME");
2223
}
2324
}

src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@
4444
<Error Condition="'$(TestUsingWorkloads)' == 'true' and '$(PackageVersionForWorkloadManifests)' == ''"
4545
Text="%24(PackageVersionForWorkloadManifests) is not set. PackageVersion=$(PackageVersion)." />
4646

47+
<PropertyGroup>
48+
<_SdkWithWorkloadForTestingDirName>$([System.IO.Path]::GetDirectoryName($(SdkWithWorkloadForTestingPath)))</_SdkWithWorkloadForTestingDirName>
49+
<_SdkWithWorkloadForTestingDirName>$([System.IO.Path]::GetFilename($(_SdkWithWorkloadForTestingDirName)))</_SdkWithWorkloadForTestingDirName>
50+
</PropertyGroup>
51+
4752
<ItemGroup Condition="'$(TestUsingWorkloads)' == 'true'">
4853
<RunScriptCommands Condition="'$(OS)' != 'Windows_NT'" Include="export WORKLOAD_PACKS_VER=$(PackageVersionForWorkloadManifests)" />
4954
<RunScriptCommands Condition="'$(OS)' == 'Windows_NT'" Include="set WORKLOAD_PACKS_VER=$(PackageVersionForWorkloadManifests)" />
@@ -70,6 +75,9 @@
7075
<RunScriptCommands Condition="'$(OS)' != 'Windows_NT'" Include="export TEST_USING_WORKLOADS=$(TestUsingWorkloads)" />
7176
<RunScriptCommands Condition="'$(OS)' == 'Windows_NT'" Include="set TEST_USING_WORKLOADS=$(TestUsingWorkloads)" />
7277

78+
<RunScriptCommands Condition="'$(OS)' != 'Windows_NT'" Include="export SDK_DIR_NAME=$(_SdkWithWorkloadForTestingDirName)" />
79+
<RunScriptCommands Condition="'$(OS)' == 'Windows_NT'" Include="set SDK_DIR_NAME=$(_SdkWithWorkloadForTestingDirName)" />
80+
7381
<RunScriptCommands Condition="'$(OS)' != 'Windows_NT'" Include="export TEST_USING_WEBCIL=$(TestUsingWebcil)" />
7482
<RunScriptCommands Condition="'$(OS)' == 'Windows_NT'" Include="set TEST_USING_WEBCIL=$(TestUsingWebcil)" />
7583

src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.cmd

Lines changed: 3 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -6,58 +6,13 @@ setlocal enabledelayedexpansion
66
[[SetCommandsEcho]]
77

88
set EXECUTION_DIR=%~dp0
9-
if [%3] NEQ [] (
10-
set SCENARIO=%3
11-
)
129

1310
if [%HELIX_WORKITEM_UPLOAD_ROOT%] == [] (
1411
set "XHARNESS_OUT=%EXECUTION_DIR%xharness-output"
1512
) else (
1613
set "XHARNESS_OUT=%HELIX_WORKITEM_UPLOAD_ROOT%\xharness-output"
1714
)
1815

19-
if [%XHARNESS_CLI_PATH%] NEQ [] (
20-
:: When running in CI, we only have the .NET runtime available
21-
:: We need to call the XHarness CLI DLL directly via dotnet exec
22-
set HARNESS_RUNNER=dotnet.exe exec "%XHARNESS_CLI_PATH%"
23-
) else (
24-
set HARNESS_RUNNER=dotnet.exe xharness
25-
)
26-
27-
if [%XHARNESS_COMMAND%] == [] (
28-
if /I [%SCENARIO%]==[WasmTestOnBrowser] (
29-
set XHARNESS_COMMAND=test-browser
30-
) else (
31-
set XHARNESS_COMMAND=test
32-
)
33-
)
34-
35-
if /I [%XHARNESS_COMMAND%] == [test] (
36-
if [%JS_ENGINE%] == [] (
37-
if /I [%SCENARIO%] == [WasmTestOnNodeJS] (
38-
set "JS_ENGINE=--engine^=NodeJS"
39-
) else (
40-
set "JS_ENGINE=--engine^=V8"
41-
)
42-
)
43-
44-
if [%MAIN_JS%] == [] (
45-
set "MAIN_JS=--js-file^=test-main.js"
46-
)
47-
48-
if [%JS_ENGINE_ARGS%] == [] (
49-
set "JS_ENGINE_ARGS=--engine-arg^=--stack-trace-limit^=1000"
50-
)
51-
) else (
52-
if [%BROWSER_PATH%] == [] if not [%HELIX_CORRELATION_PAYLOAD%] == [] (
53-
set "BROWSER_PATH=--browser-path^=%HELIX_CORRELATION_PAYLOAD%\chrome-win\chrome.exe"
54-
)
55-
)
56-
57-
if [%XHARNESS_ARGS%] == [] (
58-
set "XHARNESS_ARGS=%JS_ENGINE% %JS_ENGINE_ARGS% %BROWSER_PATH% %MAIN_JS%"
59-
)
60-
6116
if [%PREPEND_PATH%] NEQ [] (
6217
set "PATH=%PREPEND_PATH%;%PATH%"
6318
)
@@ -66,12 +21,6 @@ echo EXECUTION_DIR=%EXECUTION_DIR%
6621
echo SCENARIO=%SCENARIO%
6722
echo XHARNESS_OUT=%XHARNESS_OUT%
6823
echo XHARNESS_CLI_PATH=%XHARNESS_CLI_PATH%
69-
echo HARNESS_RUNNER=%HARNESS_RUNNER%
70-
echo XHARNESS_COMMAND=%XHARNESS_COMMAND%
71-
echo MAIN_JS=%MAIN_JS%
72-
echo JS_ENGINE=%JS_ENGINE%
73-
echo JS_ENGINE_ARGS=%JS_ENGINE_ARGS%
74-
echo XHARNESS_ARGS=%XHARNESS_ARGS%
7524

7625
set TEST_LOG_PATH=%XHARNESS_OUT%\logs
7726

@@ -98,10 +47,8 @@ exit /b %EXIT_CODE%
9847
REM Functions
9948
:SetEnvVars
10049
if [%TEST_USING_WORKLOADS%] == [true] (
101-
set _DIR_NAME=dotnet-net7+latest
10250
set SDK_HAS_WORKLOAD_INSTALLED=true
10351
) else (
104-
set _DIR_NAME=dotnet-none
10552
set SDK_HAS_WORKLOAD_INSTALLED=false
10653
)
10754
if [%TEST_USING_WEBCIL%] == [true] (
@@ -111,10 +58,10 @@ if [%TEST_USING_WEBCIL%] == [true] (
11158
)
11259

11360
if [%HELIX_CORRELATION_PAYLOAD%] NEQ [] (
114-
robocopy /mt /np /nfl /NDL /nc /e %BASE_DIR%\%_DIR_NAME% %EXECUTION_DIR%\%_DIR_NAME%
115-
set _SDK_DIR=%EXECUTION_DIR%\%_DIR_NAME%
61+
robocopy /mt /np /nfl /NDL /nc /e %BASE_DIR%\%SDK_DIR_NAME% %EXECUTION_DIR%\%SDK_DIR_NAME%
62+
set _SDK_DIR=%EXECUTION_DIR%\%SDK_DIR_NAME%
11663
) else (
117-
set _SDK_DIR=%BASE_DIR%\%_DIR_NAME%
64+
set _SDK_DIR=%BASE_DIR%\%SDK_DIR_NAME%
11865
)
11966

12067
set "PATH=%_SDK_DIR%;%PATH%"

src/mono/wasm/Wasm.Build.Tests/data/RunScriptTemplate.sh

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,32 @@
11
#!/usr/bin/env bash
22

3-
# SetCommands defined in eng\testing\tests.wasm.targets
3+
set
4+
echo "------------------------ start -------------------"
5+
46
[[SetCommands]]
57
[[SetCommandsEcho]]
68

79
EXECUTION_DIR=$(dirname $0)
8-
if [[ -n "$3" ]]; then
9-
SCENARIO=$3
10-
fi
1110

1211
if [[ -z "$HELIX_WORKITEM_UPLOAD_ROOT" ]]; then
1312
XHARNESS_OUT="$EXECUTION_DIR/xharness-output"
1413
else
1514
XHARNESS_OUT="$HELIX_WORKITEM_UPLOAD_ROOT/xharness-output"
1615
fi
1716

18-
if [[ -n "$XHARNESS_CLI_PATH" ]]; then
19-
# When running in CI, we only have the .NET runtime available
20-
# We need to call the XHarness CLI DLL directly via dotnet exec
21-
HARNESS_RUNNER="dotnet exec $XHARNESS_CLI_PATH"
22-
else
23-
HARNESS_RUNNER="dotnet xharness"
24-
fi
25-
26-
if [[ -z "$XHARNESS_COMMAND" ]]; then
27-
if [[ "$SCENARIO" == "WasmTestOnBrowser" || "$SCENARIO" == "wasmtestonbrowser" ]]; then
28-
XHARNESS_COMMAND="test-browser"
29-
else
30-
XHARNESS_COMMAND="test"
31-
fi
32-
fi
33-
34-
if [[ "$XHARNESS_COMMAND" == "test" ]]; then
35-
if [[ -z "$JS_ENGINE" ]]; then
36-
if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then
37-
JS_ENGINE="--engine=NodeJS"
38-
else
39-
JS_ENGINE="--engine=V8"
40-
fi
41-
fi
42-
43-
if [[ -z "$MAIN_JS" ]]; then
44-
MAIN_JS="--js-file=test-main.js"
45-
fi
46-
47-
if [[ -z "$JS_ENGINE_ARGS" ]]; then
48-
JS_ENGINE_ARGS="--engine-arg=--stack-trace-limit=1000"
49-
fi
50-
fi
51-
52-
if [[ -z "$XHARNESS_ARGS" ]]; then
53-
XHARNESS_ARGS="$JS_ENGINE $JS_ENGINE_ARGS $MAIN_JS"
54-
fi
55-
5617
if [[ -n "$PREPEND_PATH" ]]; then
5718
export PATH=$PREPEND_PATH:$PATH
5819
fi
5920

6021
echo EXECUTION_DIR=$EXECUTION_DIR
61-
echo SCENARIO=$SCENARIO
6222
echo XHARNESS_OUT=$XHARNESS_OUT
6323
echo XHARNESS_CLI_PATH=$XHARNESS_CLI_PATH
64-
echo HARNESS_RUNNER=$HARNESS_RUNNER
65-
echo XHARNESS_COMMAND=$XHARNESS_COMMAND
66-
echo MAIN_JS=$MAIN_JS
67-
echo JS_ENGINE=$JS_ENGINE
68-
echo JS_ENGINE_ARGS=$JS_ENGINE_ARGS
69-
echo XHARNESS_ARGS=$XHARNESS_ARGS
7024

7125
function set_env_vars()
7226
{
73-
local _DIR_NAME=
7427
if [ "x$TEST_USING_WORKLOADS" = "xtrue" ]; then
75-
_DIR_NAME=dotnet-net7+latest
7628
export SDK_HAS_WORKLOAD_INSTALLED=true
7729
else
78-
_DIR_NAME=dotnet-none
7930
export SDK_HAS_WORKLOAD_INSTALLED=false
8031
fi
8132

@@ -87,10 +38,10 @@ function set_env_vars()
8738

8839
local _SDK_DIR=
8940
if [[ -n "$HELIX_WORKITEM_UPLOAD_ROOT" ]]; then
90-
cp -r $BASE_DIR/$_DIR_NAME $EXECUTION_DIR
91-
_SDK_DIR=$EXECUTION_DIR/$_DIR_NAME
41+
cp -r $BASE_DIR/$SDK_DIR_NAME $EXECUTION_DIR
42+
_SDK_DIR=$EXECUTION_DIR/$SDK_DIR_NAME
9243
else
93-
_SDK_DIR=$BASE_DIR/$_DIR_NAME
44+
_SDK_DIR=$BASE_DIR/$SDK_DIR_NAME
9445
fi
9546

9647
export PATH=$_SDK_DIR:$PATH

src/mono/wasm/build/WasmApp.Native.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
22
<!-- not really meant to be used w/o WasmApp.targets -->
33

4-
<UsingTask TaskName="ManagedToNativeGenerator" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
4+
<UsingTask TaskName="Microsoft.WebAssembly.Build.Tasks.ManagedToNativeGenerator" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
55
<UsingTask TaskName="Microsoft.WebAssembly.Build.Tasks.EmccCompile" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
66

77
<PropertyGroup>

src/mono/wasm/build/WasmApp.targets

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
2-
<UsingTask TaskName="WasmAppBuilder" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
3-
<UsingTask TaskName="WasmLoadAssembliesAndReferences" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
4-
<UsingTask TaskName="WasmCalculateInitialHeapSize" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
2+
<UsingTask TaskName="Microsoft.WebAssembly.Build.Tasks.WasmAppBuilder" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
3+
<UsingTask TaskName="Microsoft.WebAssembly.Build.Tasks.WasmLoadAssembliesAndReferences" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
4+
<UsingTask TaskName="Microsoft.WebAssembly.Build.Tasks.WasmCalculateInitialHeapSize" AssemblyFile="$(WasmAppBuilderTasksAssemblyPath)" />
55

66
<!--
77
Required public items/properties:

src/tasks/WasmAppBuilder/ManagedToNativeGenerator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
using Microsoft.Build.Framework;
1212
using Microsoft.Build.Utilities;
1313

14+
namespace Microsoft.WebAssembly.Build.Tasks;
15+
1416
public class ManagedToNativeGenerator : Task
1517
{
1618
[Required]

0 commit comments

Comments
 (0)