diff --git a/Directory.Build.props b/Directory.Build.props
index be3d42e18ba93..9d024eef3d5c3 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -70,6 +70,7 @@
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmBuildTasks', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
+ $([MSBuild]::NormalizeDirectory('src', 'mono', 'wasm', 'build'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(NetCoreAppToolCurrent)'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'RuntimeConfigParser', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
diff --git a/eng/pipelines/common/platform-matrix.yml b/eng/pipelines/common/platform-matrix.yml
index 000d1dcecdfda..b8eb5b253438d 100644
--- a/eng/pipelines/common/platform-matrix.yml
+++ b/eng/pipelines/common/platform-matrix.yml
@@ -194,7 +194,7 @@ jobs:
targetRid: browser-wasm
platform: Browser_wasm
container:
- image: ubuntu-18.04-webassembly-20210223133559-4800846
+ image: ubuntu-18.04-webassembly-20210309143118-005aab4
registry: mcr
jobParameters:
runtimeFlavor: ${{ parameters.runtimeFlavor }}
diff --git a/eng/pipelines/runtime-staging.yml b/eng/pipelines/runtime-staging.yml
index 0197670b07218..720cbfe86267e 100644
--- a/eng/pipelines/runtime-staging.yml
+++ b/eng/pipelines/runtime-staging.yml
@@ -205,8 +205,47 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono_AOT
- buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:EnableAggressiveTrimming=true /p:RunAOTCompilation=true
- timeoutInMinutes: 120
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:EnableAggressiveTrimming=true /p:BuildWasmAOTTestsOnHelix=true /p:RunAOTCompilation=true
+ timeoutInMinutes: 180
+ condition: >-
+ or(
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ eq(variables['isFullMatrix'], true))
+ # extra steps, run tests
+ extraStepsTemplate: /eng/pipelines/libraries/helix.yml
+ extraStepsParameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true
+ scenarios:
+ - normal
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
+
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: mono
+ platforms:
+ - Browser_wasm
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: monoContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_Mono_EAT
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:EnableAggressiveTrimming=true /p:BuildWasmAOTTestsOnHelix=true /p:RunAOTCompilation=false
+ timeoutInMinutes: 180
condition: >-
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
@@ -218,6 +257,7 @@ jobs:
extraStepsParameters:
creator: dotnet-bot
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true
scenarios:
- normal
condition: >-
diff --git a/eng/testing/ILLink.Descriptor.TestUtilities.xml b/eng/testing/ILLink.Descriptor.TestUtilities.xml
new file mode 100644
index 0000000000000..ac7e328c9038e
--- /dev/null
+++ b/eng/testing/ILLink.Descriptor.TestUtilities.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/eng/testing/ILLink.Descriptor.xunit.xml b/eng/testing/ILLink.Descriptor.xunit.xml
index 4ddd4e09d883d..eb99fc4d0039b 100644
--- a/eng/testing/ILLink.Descriptor.xunit.xml
+++ b/eng/testing/ILLink.Descriptor.xunit.xml
@@ -9,7 +9,7 @@
-
-
-
+
+
+
diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets
index 81246339652ca..4095d6390912c 100644
--- a/eng/testing/tests.mobile.targets
+++ b/eng/testing/tests.mobile.targets
@@ -13,15 +13,31 @@
true
-
+
+ helix
+ helix
+ local
+
+
+
+ dotnet msbuild publish/aot-build.proj /p:WasmBuildSupportDir=$HELIX_CORRELATION_PAYLOAD/build /bl:$XHARNESS_OUT/AOTBuild.binlog
+ $(RunScriptCommand) /p:RunAOTCompilation=$(RunAOTCompilation)
+
+ $(RunScriptCommand) && cd AppBundle &&
+
+
+
- $HARNESS_RUNNER wasm $XHARNESS_COMMAND --app=. --engine=$(JSEngine) $(JSEngineArgs) --js-file=runtime.js --output-directory=$XHARNESS_OUT -- $(RunTestsJSArguments) --run WasmTestRunner.dll $(AssemblyName).dll
- $HARNESS_RUNNER wasm $XHARNESS_COMMAND --app=. --engine=$(JSEngine) $(JSEngineArgs) --js-file=runtime.js --output-directory=$XHARNESS_OUT --expected-exit-code=$(ExpectedExitCode) -- $(RunTestsJSArguments) --run $(AssemblyName).dll --testing
+ $(RunScriptCommand) $HARNESS_RUNNER wasm $XHARNESS_COMMAND --app=. --engine=$(JSEngine) $(JSEngineArgs) --js-file=runtime.js --output-directory=$XHARNESS_OUT -- $(RunTestsJSArguments) --run WasmTestRunner.dll $(AssemblyName).dll
+ $(RunScriptCommand) $HARNESS_RUNNER wasm $XHARNESS_COMMAND --app=. --engine=$(JSEngine) $(JSEngineArgs) --js-file=runtime.js --output-directory=$XHARNESS_OUT --expected-exit-code=$(ExpectedExitCode) -- $(RunTestsJSArguments) --run $(AssemblyName).dll --testing
+
+
+
false
- true
+ false
false
false
- false
+ true
@@ -163,7 +179,7 @@
-
@@ -240,31 +256,53 @@
+
-
-
-
+
+
+
+
PrepareForWasmBuildApp;$(WasmBuildAppDependsOn)
- $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'mono', 'wasm', 'emsdk'))
+ $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'mono', 'wasm', 'emsdk'))
+
+ WasmBuildApp
+ StageEmSdkForHelix
+
+ $(BundleTestWasmAppDependsOn);_BundleAOTTestWasmAppForHelix
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
@@ -286,10 +324,16 @@
-
+
+ <_CopyLocalPaths Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.BuildReference)' == 'true' and !$([System.String]::new('%(ReferenceCopyLocalPaths.Identity)').EndsWith('.resources.dll'))" />
+ <_CopyLocalPaths TargetPath="%(_CopyLocalPaths.RelativePath)" Condition="'%(_CopyLocalPaths.RelativePath)' != ''" />
+ <_CopyLocalPaths TargetPath="%(FileName)%(Extension)" Condition="'%(_CopyLocalPaths.RelativePath)' == ''" />
+
+
+
-
+
diff --git a/src/libraries/sendtohelix.proj b/src/libraries/sendtohelix.proj
index 4d113c917f7b5..22d2f24fad15e 100644
--- a/src/libraries/sendtohelix.proj
+++ b/src/libraries/sendtohelix.proj
@@ -63,6 +63,7 @@
<_ProjectsToBuild Include="$(PerScenarioProjectFile)">
$(_PropertiesToPass);Scenario=%(_Scenarios.Identity);TestArchiveRuntimeFile=$(TestArchiveRuntimeFile)
+ %(_ProjectsToBuild.AdditionalProperties);NeedsToBuildWasmAppsOnHelix=$(NeedsToBuildWasmAppsOnHelix)
diff --git a/src/libraries/sendtohelixhelp.proj b/src/libraries/sendtohelixhelp.proj
index d9c2f5571237e..d326ebfae5310 100644
--- a/src/libraries/sendtohelixhelp.proj
+++ b/src/libraries/sendtohelixhelp.proj
@@ -50,6 +50,7 @@
$(TestRunNamePrefix)$(Scenario)-
$(WaitForWorkItemCompletion)
+ true
@@ -104,7 +105,7 @@
-
+
true
true
sdk
@@ -255,6 +256,8 @@
$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'mono', 'wasm', 'build'))
+
+
$(HelixPostCommands);
@@ -266,7 +269,7 @@
-
+
diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj
index 2ba7345fa1e23..007d4f1614ec0 100644
--- a/src/libraries/tests.proj
+++ b/src/libraries/tests.proj
@@ -205,101 +205,88 @@
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -404,7 +391,8 @@
Exclude="@(ProjectExclusions)"
BuildInParallel="false" />
-
+
+
+
+ $(HELIX_CORRELATION_PAYLOAD)\build\
+
+ <_WasmTargetsDir Condition="'$(RuntimeSrcDir)' != ''">$(RuntimeSrcDir)\src\mono\wasm\build\
+ <_WasmTargetsDir Condition="'$(WasmBuildSupportDir)' != ''">$(WasmBuildSupportDir)\wasm\
+ $(WasmBuildSupportDir)\emsdk\
+
+
+
+ PrepareForWasmBuild;$(WasmBuildAppDependsOn)
+
+
diff --git a/src/mono/wasm/data/aot-tests/Directory.Build.targets b/src/mono/wasm/data/aot-tests/Directory.Build.targets
new file mode 100644
index 0000000000000..5f8bd42de2250
--- /dev/null
+++ b/src/mono/wasm/data/aot-tests/Directory.Build.targets
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mono/wasm/data/aot-tests/aot-build.proj b/src/mono/wasm/data/aot-tests/aot-build.proj
new file mode 100644
index 0000000000000..b0b428dfa9619
--- /dev/null
+++ b/src/mono/wasm/data/aot-tests/aot-build.proj
@@ -0,0 +1,42 @@
+
+
+
+ true
+ $(HELIX_WORKITEM_ROOT)\
+ $(TestRootDir)AppBundle\
+ $(HELIX_WORKITEM_ROOT)\obj
+ false
+ false
+ true
+ false
+
+ PrepareForWasmBuildApp;$(WasmBuildAppDependsOn)
+
+
+
+
+
+
+ $(BundleDir)
+ $(TestRootDir)\publish\WasmTestRunner.dll
+ $(TestRootDir)\publish\runtime-test.js
+ true
+ true
+
+
+
+
+
+ $([System.IO.Directory]::GetParent('%(Identity)').Name)
+
+
+
+
+
+ <_ExtraFiles Include="$(TestRootDir)\extraFiles\**\*" />
+
+
+
+
+