mirror of
https://github.com/VSadov/Satori.git
synced 2025-06-09 09:34:49 +09:00

* [wasm] Run browser tests on helix/windows * Build just wasm/browsertests on helix/windows * Use $(ChromiumRevision) in windows links * Fix conditions * Set PATH differently * Use backslash in PATH on windows * Try different version of chromium * Pass scenario and browser host to build And set browser path on windows to be able to start chrome from xharness * Try to get more info from the helix workitems * Fix dir separator, add broser path * Create WasmBuildSupportDir * Revert "Try to get more info from the helix workitems" This reverts commit 8807434a33a09a27f2c21cb321b743f155955cb2. * Put the dir cmds back, fix mkdir call * More debug info * Bump xharness * Bump xharness again With darc this time * StressLogAnalyzer didn't print the number of messages correctly if it exceeded the int range (2 billion). (#54832) Fix is to just use 64 bit ints instead. * Found a race condition where the LOH flag on a segment is set too late. This gives another thread the chance to allocate in a fresh LOH region that doesn't have the LOH flag set just yet and trip over an assert in Object::ValidateInner. (#54839) The fix is simply to set the flag in get_new_region before the region is put on the list for the LOH generation. * Try to show the chrome logs * Use different path for chrome logs * Use newer image with font for chrome The chrome was crashing, because it didn't find any sans-serif font. * Increase timeouts * Disable tests which timeout * Remove debug calls * Put back normal scenario * Do not set scenario in build args * Add browser sample exclusion * Restore the platform matrix * Remove the wasm build test changes That will be handled in https://github.com/dotnet/runtime/pull/54451 * Remove duplicate exclusion * Suggested property name change * Fix last merge * Simplify condition We don't pass Scenario anymore * Include chrome and chromedriver in the payload Co-authored-by: Peter Sollich <petersol@microsoft.com>
182 lines
11 KiB
XML
182 lines
11 KiB
XML
<Project>
|
|
<!-- We need to set this in order to get extensibility on xunit category traits and other arguments we pass down to xunit via MSBuild properties -->
|
|
<PropertyGroup>
|
|
<BundleTestAppTargets>$(BundleTestAppTargets);BundleTestWasmApp</BundleTestAppTargets>
|
|
<DebuggerSupport Condition="'$(DebuggerSupport)' == '' and '$(Configuration)' == 'Debug'">true</DebuggerSupport>
|
|
<!-- Some tests expect to load satellite assemblies by path, eg. System.Runtime.Loader.Tests,
|
|
so, just setting it true by default -->
|
|
<IncludeSatelliteAssembliesInVFS Condition="'$(IncludeSatelliteAssembliesInVFS)' == ''">true</IncludeSatelliteAssembliesInVFS>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<BuildAOTTestsOn Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(Scenario)' == 'BuildWasmApps'">helix</BuildAOTTestsOn>
|
|
<BuildAOTTestsOn Condition="'$(BuildAOTTestsOnHelix)' == 'true'">helix</BuildAOTTestsOn>
|
|
<BuildAOTTestsOn Condition="'$(BuildAOTTestsOn)' == ''">local</BuildAOTTestsOn>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="'$(RunScriptCommand)' == ''">
|
|
<JSEngine Condition="'$(JSEngine)' == ''">V8</JSEngine>
|
|
<JSEngineArgs Condition="'$(JSEngine)' == 'V8'">$(JSEngineArgs) --engine-arg=--stack-trace-limit=1000</JSEngineArgs>
|
|
|
|
<_XHarnessArgs Condition="'$(OS)' != 'Windows_NT'">wasm $XHARNESS_COMMAND --app=. --output-directory=$XHARNESS_OUT</_XHarnessArgs>
|
|
<_XHarnessArgs Condition="'$(OS)' == 'Windows_NT'">wasm %XHARNESS_COMMAND% --app=. --output-directory=%XHARNESS_OUT%</_XHarnessArgs>
|
|
|
|
<_XHarnessArgs Condition="'$(Scenario)' != 'WasmTestOnBrowser'">$(_XHarnessArgs) --engine=$(JSEngine) $(JSEngineArgs) --js-file=runtime.js</_XHarnessArgs>
|
|
<_XHarnessArgs Condition="'$(BrowserHost)' == 'windows'">$(_XHarnessArgs) --browser=chrome --browser-path=%HELIX_CORRELATION_PAYLOAD%\chrome-win\chrome.exe</_XHarnessArgs>
|
|
<_XHarnessArgs Condition="'$(IsFunctionalTest)' == 'true'" >$(_XHarnessArgs) --expected-exit-code=$(ExpectedExitCode)</_XHarnessArgs>
|
|
<_XHarnessArgs Condition="'$(WasmXHarnessArgs)' != ''" >$(_XHarnessArgs) $(WasmXHarnessArgs)</_XHarnessArgs>
|
|
|
|
<_AppArgs Condition="'$(IsFunctionalTest)' != 'true' and '$(Scenario)' != 'BuildWasmApps'">--run WasmTestRunner.dll $(AssemblyName).dll</_AppArgs>
|
|
<_AppArgs Condition="'$(IsFunctionalTest)' == 'true'">--run $(AssemblyName).dll --testing</_AppArgs>
|
|
|
|
<_AppArgs Condition="'$(WasmTestAppArgs)' != ''">$(_AppArgs) $(WasmTestAppArgs)</_AppArgs>
|
|
|
|
<RunScriptCommand Condition="'$(OS)' != 'Windows_NT'">$HARNESS_RUNNER $(_XHarnessArgs) %24WasmXHarnessArgs -- $(WasmXHarnessMonoArgs) %24WasmXHarnessMonoArgs $(_AppArgs) %24WasmTestAppArgs</RunScriptCommand>
|
|
<RunScriptCommand Condition="'$(OS)' == 'Windows_NT'">%HARNESS_RUNNER% $(_XHarnessArgs) %WasmXHarnessArgs% -- $(WasmXHarnessMonoArgs) %WasmXHarnessMonoArgs% $(_AppArgs) %WasmTestAppArgs%</RunScriptCommand>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="'$(BuildAOTTestsOnHelix)' == 'true'">
|
|
<_AOTBuildCommand>dotnet msbuild publish/ProxyProjectForAOTOnHelix.proj /bl:$XHARNESS_OUT/AOTBuild.binlog</_AOTBuildCommand>
|
|
|
|
<!-- running aot-helix tests locally, so we can test with the same project file as CI -->
|
|
<_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration)</_AOTBuildCommand>
|
|
|
|
<_AOTBuildCommand>$(_AOTBuildCommand) /p:RunAOTCompilation=$(RunAOTCompilation) /p:EmccLinkOptimizationFlag='-Oz -Wl%252C-O0 -Wl%252C-lto-O0'</_AOTBuildCommand>
|
|
<_AOTBuildCommand>$(_AOTBuildCommand) && cd wasm_build/AppBundle</_AOTBuildCommand>
|
|
|
|
<RunScriptCommand Condition="'$(RunScriptCommand)' == ''">$(_AOTBuildCommand)</RunScriptCommand>
|
|
<RunScriptCommand Condition="'$(RunScriptCommand)' != ''">$(_AOTBuildCommand) && $(RunScriptCommand)</RunScriptCommand>
|
|
</PropertyGroup>
|
|
|
|
<!-- Don't include InTree.props here, because the test projects themselves can set the target* properties -->
|
|
<Import Project="$(MonoProjectRoot)\wasm\build\WasmApp.props"
|
|
Condition="'$(BuildAOTTestsOn)' == 'local'" />
|
|
<Import Project="$(MonoProjectRoot)\wasm\build\WasmApp.InTree.targets"
|
|
Condition="'$(BuildAOTTestsOn)' == 'local'" />
|
|
|
|
<PropertyGroup>
|
|
<WasmBuildAppDependsOn>PrepareForWasmBuildApp;$(WasmBuildAppDependsOn)</WasmBuildAppDependsOn>
|
|
|
|
<BundleTestWasmAppDependsOn Condition="'$(BuildAOTTestsOn)' == 'local'">WasmBuildApp</BundleTestWasmAppDependsOn>
|
|
<BundleTestWasmAppDependsOn Condition="'$(BuildAOTTestsOnHelix)' == 'true'">$(BundleTestWasmAppDependsOn);_BundleAOTTestWasmAppForHelix</BundleTestWasmAppDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<WorkloadIdForTesting Include="wasm-tools"
|
|
ManifestName="Microsoft.NET.Workload.Mono.ToolChain"
|
|
Version="$(PackageVersion)"
|
|
VersionBand="$(SdkBandVersion)" />
|
|
</ItemGroup>
|
|
|
|
<Target Name="BundleTestWasmApp" DependsOnTargets="$(BundleTestWasmAppDependsOn)" />
|
|
|
|
<UsingTask Condition="'$(BuildAOTTestsOnHelix)' == 'true'"
|
|
TaskName="Microsoft.WebAssembly.Build.Tasks.GenerateAOTProps"
|
|
AssemblyFile="$(WasmBuildTasksAssemblyPath)" />
|
|
|
|
<Target Name="_BundleAOTTestWasmAppForHelix" DependsOnTargets="PrepareForWasmBuildApp">
|
|
<ItemGroup>
|
|
<BundleFiles Include="$(WasmMainJSPath)" TargetDir="publish" />
|
|
<BundleFiles Include="@(WasmAssembliesToBundle)" TargetDir="publish\%(WasmAssembliesToBundle.RecursiveDir)" />
|
|
|
|
<BundleFiles Include="$(MonoProjectRoot)\wasm\data\aot-tests\*" TargetDir="publish" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup Condition="'$(DebuggerSupport)' == 'true'">
|
|
<!-- Add any pdb files, if available -->
|
|
<_BundlePdbFiles Include="$([System.IO.Path]::ChangeExtension('%(WasmAssembliesToBundle.Identity)', '.pdb'))" />
|
|
<BundleFiles Include="@(_BundlePdbFiles)" TargetDir="publish" Condition="Exists(%(_BundlePdbFiles.Identity))" />
|
|
</ItemGroup>
|
|
|
|
<!-- To recreate the original project on helix, we need to set the wasm properties also, same as the
|
|
library test project. Eg. $(InvariantGlobalization) -->
|
|
<ItemGroup>
|
|
<_WasmPropertyNames Include="InvariantGlobalization" />
|
|
<_WasmPropertyNames Include="AOTMode" />
|
|
<_WasmPropertyNames Include="WasmDebugLevel" />
|
|
<_WasmPropertyNames Include="WasmBuildNative" />
|
|
<_WasmPropertyNames Include="_WasmDevel" />
|
|
<_WasmPropertyNames Include="WasmLinkIcalls" />
|
|
<_WasmPropertyNames Include="WasmDedup" />
|
|
<_WasmPropertyNames Include="IncludeSatelliteAssembliesInVFS" />
|
|
|
|
<_WasmPropertiesToPass
|
|
Include="$(%(_WasmPropertyNames.Identity))"
|
|
Name="%(_WasmPropertyNames.Identity)"
|
|
ConditionToUse__="%(_WasmPropertyNames.ConditionToUse__)" />
|
|
|
|
<_WasmVFSFilesToCopy Include="@(WasmFilesToIncludeInFileSystem)" />
|
|
<_WasmVFSFilesToCopy TargetPath="%(FileName)%(Extension)" Condition="'%(TargetPath)' == ''" />
|
|
|
|
<!-- Example of passing items to the project
|
|
|
|
<_WasmItemsToPass Include="@(BundleFiles)" OriginalItemName__="BundleFiles" ConditionToUse__="'$(Foo)' != 'true'" />
|
|
|
|
-->
|
|
</ItemGroup>
|
|
|
|
<!-- This file gets imported by the project file on helix -->
|
|
<GenerateAOTProps
|
|
Properties="@(_WasmPropertiesToPass)"
|
|
Items="@(_WasmItemsToPass)"
|
|
OutputFile="$(BundleDir)publish\ProxyProjectForAOTOnHelix.props" />
|
|
|
|
<Copy SourceFiles="@(BundleFiles)" DestinationFolder="$(BundleDir)%(TargetDir)" />
|
|
<Copy SourceFiles="@(_WasmVFSFilesToCopy)" DestinationFiles="$(BundleDir)\extraFiles\%(_WasmVFSFilesToCopy.TargetPath)" />
|
|
</Target>
|
|
|
|
<Target Name="PrepareForWasmBuildApp">
|
|
<PropertyGroup>
|
|
<WasmAppDir>$(BundleDir)</WasmAppDir>
|
|
<WasmMainAssemblyFileName Condition="'$(WasmMainAssemblyFileName)' == ''">WasmTestRunner.dll</WasmMainAssemblyFileName>
|
|
<WasmMainJSPath Condition="'$(WasmMainJSPath)' == ''">$(MonoProjectRoot)\wasm\runtime-test.js</WasmMainJSPath>
|
|
<WasmInvariantGlobalization>$(InvariantGlobalization)</WasmInvariantGlobalization>
|
|
<WasmGenerateRunV8Script>true</WasmGenerateRunV8Script>
|
|
<WasmNativeStrip>false</WasmNativeStrip>
|
|
|
|
<WasmNativeDebugSymbols Condition="'$(DebuggerSupport)' == 'true' and '$(WasmNativeDebugSymbols)' == ''">true</WasmNativeDebugSymbols>
|
|
<WasmDebugLevel Condition="'$(DebuggerSupport)' == 'true' and '$(WasmDebugLevel)' == ''">-1</WasmDebugLevel>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup Condition="'$(IncludeSatelliteAssembliesInVFS)' == 'true'">
|
|
<_SatelliteAssemblies Include="$(PublishDir)*\*.resources.dll" />
|
|
<_SatelliteAssemblies CultureName="$([System.IO.Directory]::GetParent('%(Identity)').Name)" />
|
|
<_SatelliteAssemblies TargetPath="%(CultureName)\%(FileName)%(Extension)" />
|
|
|
|
<WasmFilesToIncludeInFileSystem Include="@(_SatelliteAssemblies)" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<WasmAssembliesToBundle Include="$(PublishDir)\**\*.dll"/>
|
|
<WasmFilesToIncludeInFileSystem Include="@(ContentWithTargetPath)" />
|
|
|
|
<_CopyLocalPaths
|
|
Include="@(PublishItemsOutputGroupOutputs)"
|
|
Condition="'%(PublishItemsOutputGroupOutputs.BuildReference)' == 'true' and
|
|
!$([System.String]::new('%(PublishItemsOutputGroupOutputs.Identity)').EndsWith('.resources.dll'))" />
|
|
|
|
<_CopyLocalPaths TargetPath="%(_CopyLocalPaths.RelativePath)" Condition="'%(_CopyLocalPaths.RelativePath)' != ''" />
|
|
<_CopyLocalPaths TargetPath="%(FileName)%(Extension)" Condition="'%(_CopyLocalPaths.RelativePath)' == ''" />
|
|
<WasmFilesToIncludeInFileSystem Include="@(_CopyLocalPaths)" />
|
|
|
|
<!-- Include files specified by test projects from publish dir -->
|
|
<WasmFilesToIncludeInFileSystem
|
|
Include="$(PublishDir)%(WasmFilesToIncludeFromPublishDir.Identity)"
|
|
TargetPath="%(WasmFilesToIncludeFromPublishDir.Identity)"
|
|
Condition="'%(WasmFilesToIncludeFromPublishDir.Identity)' != ''" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<!-- linker automatically picks up the .pdb files, but they are not added to the publish list.
|
|
Add them explicitly here, so they can be used with WasmAppBuilder -->
|
|
<Target Name="AddPdbFilesToPublishList" AfterTargets="ILLink" Condition="'$(DebuggerSupport)' == 'true'">
|
|
<ItemGroup>
|
|
<_PdbFilesToCheck Include="$([System.IO.Path]::ChangeExtension('%(ResolvedFileToPublish.Identity)', '.pdb'))"
|
|
Condition="'%(ResolvedFileToPublish.Extension)' == '.dll'" />
|
|
|
|
<ResolvedFileToPublish Include="@(_PdbFilesToCheck)"
|
|
Condition="Exists(%(_PdbFilesToCheck.Identity))"
|
|
RelativePath="%(_PdbFilesToCheck.FileName)%(_PdbFilesToCheck.Extension)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
</Project>
|