Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[browser] Use standard xunit test runner on multithreaded runtime #91317

Merged
merged 47 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
21f008e
wip
maraf Aug 30, 2023
dde8bd0
Fix -mt argument position
maraf Aug 30, 2023
fceb4e4
Merge remote-tracking branch 'origin/main' into WasmXharnessThreads
maraf Sep 20, 2023
d355f0e
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Nov 10, 2023
5e08c6b
Add test assembly to VFS
maraf Nov 10, 2023
1fe73a4
Revert to use XunitFrontController
maraf Nov 10, 2023
d07c3f8
Fix duplicities in filesystem items
maraf Nov 10, 2023
d85d057
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Nov 10, 2023
21b9f38
Allow to specify TargetDir for WasmFilesToIncludeFromPublishDir
maraf Nov 13, 2023
c1aecce
Rename -mt argument so it doesn't clash with -m filter. Sigh
maraf Nov 13, 2023
0200dd8
Log xunit start event is XHARNESS_LOG_TEST_START is set
maraf Nov 13, 2023
e09edaf
Move start log after arg check
maraf Nov 13, 2023
93d74e7
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Nov 13, 2023
f24ec62
Disable PMDesignator_Get_ReturnsExpected_HybridGlobalization test on MT
maraf Nov 15, 2023
0111ebf
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Jan 26, 2024
6c775c6
Remove comments
maraf Jan 26, 2024
76fdc01
Ignore warning
maraf Jan 26, 2024
22a9a44
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Jan 29, 2024
87f4917
Update WasmTestRunner based on changes in XHarness
maraf Jan 29, 2024
3358756
Remove unused using
maraf Jan 29, 2024
284a3fa
Rename entrypoint class name
maraf Jan 29, 2024
d592e58
Fix envvar value
maraf Jan 29, 2024
0e875a7
REVERT: Test thread ID logging
maraf Jan 29, 2024
d169ae2
Fix
maraf Jan 29, 2024
a6b175d
Revert "REVERT: Test thread ID logging"
maraf Jan 30, 2024
f097fd1
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Jan 30, 2024
5cf9333
Cleanup usings
maraf Jan 30, 2024
456e6ab
Fix envvar value
maraf Jan 30, 2024
803c3db
Try to enable PMDesignator_Get_ReturnsExpected_HybridGlobalization
maraf Jan 30, 2024
ada85ee
Try non-background execution
maraf Jan 30, 2024
f1583e0
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Jan 30, 2024
b73131f
Revert "Try non-background execution"
maraf Jan 30, 2024
35e74f0
Merge branch 'main' into WasmXharnessThreads
lewing Jan 31, 2024
d8636c5
Pass verbosity to XHarness
maraf Feb 2, 2024
8eee150
Pass log level to xharness. Replace arg with property for STRT logging
maraf Feb 2, 2024
66daeee
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Feb 2, 2024
cd07f44
Update condition to trigger threaded runner
maraf Feb 5, 2024
a3cac81
How to iterate on xharness runner changes
maraf Feb 5, 2024
44b5609
Testing RunInParallel
maraf Feb 6, 2024
b01bbbe
Merge remote-tracking branch 'upstream/main' into WasmXharnessThreads
maraf Feb 12, 2024
abeaccb
Fix build
maraf Feb 13, 2024
25f54df
System.Threading.Tasks.Tests logging start
maraf Feb 13, 2024
dff6fa3
Test 8 threads
maraf Feb 14, 2024
e8414a0
Print number of threads for parallel run
maraf Feb 14, 2024
4a15238
Remove RunInParallel
maraf Feb 15, 2024
f463525
Remove thjread ID logging for all tests
maraf Feb 15, 2024
c8a3435
Document verbosity values
maraf Feb 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions eng/testing/tests.browser.targets
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
<WasmTestAppArgs Condition="'$(_XUnitBackgroundExec)' == 'true'">$(WasmTestAppArgs) -backgroundExec</WasmTestAppArgs>
maraf marked this conversation as resolved.
Show resolved Hide resolved
<_AppArgs Condition="'$(WasmTestAppArgs)' != ''">$(_AppArgs) $(WasmTestAppArgs)</_AppArgs>

<WasmXHarnessMonoArgs Condition="'$(XunitShowProgress)' == 'true'">$(WasmXHarnessMonoArgs) --setenv=XHARNESS_LOG_TEST_START=1</WasmXHarnessMonoArgs>
<WasmXHarnessMonoArgs Condition="'$(XunitShowProgress)' == 'true'">$(WasmXHarnessMonoArgs) --setenv=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
maraf marked this conversation as resolved.
Show resolved Hide resolved
<!-- help unit test with PlatformDetection.IsThreadingSupported via IsBrowserThreadingSupported env variable -->
<WasmXHarnessMonoArgs Condition="'$(WasmEnableThreads)' == 'true'">$(WasmXHarnessMonoArgs) --setenv=IsBrowserThreadingSupported=true</WasmXHarnessMonoArgs>
</PropertyGroup>
Expand All @@ -108,9 +108,11 @@
<_XHarnessArgs Condition="'$(_UseWasmSymbolicator)' == 'true'" >$(_XHarnessArgs) --symbolicator WasmSymbolicator.dll,Microsoft.WebAssembly.Internal.SymbolicatorWrapperForXHarness</_XHarnessArgs>
<_XHarnessArgs Condition="'$(_WasmBrowserPathForTests)' != ''" >$(_XHarnessArgs) &quot;--browser-path=$(_WasmBrowserPathForTests)&quot;</_XHarnessArgs>
<_XHarnessArgs Condition="'$(WasmXHarnessTestsTimeout)' != ''" >$(_XHarnessArgs) &quot;--timeout=$(WasmXHarnessTestsTimeout)&quot;</_XHarnessArgs>
<_XHarnessArgs Condition="'$(WasmXHarnessVerbosity)' != ''" >$(_XHarnessArgs) --verbosity=$(WasmXHarnessVerbosity)</_XHarnessArgs><!-- Trace, Debug, Information (default), Warning, Error, Critical -->
<_XHarnessArgs Condition="'$(WasmXHarnessArgsCli)' != ''" >$(_XHarnessArgs) $(WasmXHarnessArgsCli)</_XHarnessArgs>

<!-- There two flavors of WasmXHarnessArgs and WasmXHarnessMonoArgs, one is MSBuild property and the other is environment variable -->
<_AppArgs Condition="'$(WasmEnableThreads)' == 'true'">$(_AppArgs) -threads</_AppArgs>
<!-- There are two flavors of WasmXHarnessArgs and WasmXHarnessMonoArgs, one is MSBuild property and the other is environment variable -->
<RunScriptCommand Condition="'$(OS)' != 'Windows_NT'">$HARNESS_RUNNER $(_XHarnessArgs) %24XHARNESS_ARGS %24WasmXHarnessArgs -- $(WasmXHarnessMonoArgs) %24WasmXHarnessMonoArgs $(_AppArgs) %24WasmTestAppArgs</RunScriptCommand>
<RunScriptCommand Condition="'$(OS)' == 'Windows_NT'">%HARNESS_RUNNER% $(_XHarnessArgs) %XHARNESS_ARGS% %WasmXHarnessArgs% -- $(WasmXHarnessMonoArgs) %WasmXHarnessMonoArgs% $(_AppArgs) %WasmTestAppArgs%</RunScriptCommand>
</PropertyGroup>
Expand Down Expand Up @@ -147,6 +149,12 @@
<WasmNestedPublishAppDependsOn>PrepareForWasmBuildApp;$(WasmNestedPublishAppDependsOn)</WasmNestedPublishAppDependsOn>
</PropertyGroup>

<Target Name="IncludeTestAssemblyInVFS" BeforeTargets="PrepareForWasmBuildApp">
<ItemGroup>
<WasmFilesToIncludeFromPublishDir Include="$(AssemblyName).dll" Exclude="@(WasmFilesToIncludeFromPublishDir)" />
</ItemGroup>
</Target>

<Target Name="PrepareForWasmBuildApp">
<PropertyGroup>
<WasmAppDir>$(BundleDir)</WasmAppDir>
Expand Down Expand Up @@ -197,7 +205,7 @@
<!-- Include files specified by test projects from publish dir -->
<WasmFilesToIncludeInFileSystem
Include="$(PublishDir)%(WasmFilesToIncludeFromPublishDir.Identity)"
TargetPath="%(WasmFilesToIncludeFromPublishDir.Identity)"
TargetPath="%(WasmFilesToIncludeFromPublishDir.TargetDir)/%(WasmFilesToIncludeFromPublishDir.Identity)"
Condition="'%(WasmFilesToIncludeFromPublishDir.Identity)' != ''" />
</ItemGroup>

Expand Down
4 changes: 2 additions & 2 deletions eng/testing/tests.wasi.targets
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<_AppArgs Condition="'$(WasmTestAppArgs)' != ''">$(_AppArgs) -- $(WasmTestAppArgs)</_AppArgs>

<!-- FIXME: wasttime specific param name -->
<WasmXHarnessMonoArgs Condition="'$(XunitShowProgress)' == 'true'">$(WasmXHarnessMonoArgs) --env=XHARNESS_LOG_TEST_START=1</WasmXHarnessMonoArgs>
<WasmXHarnessMonoArgs Condition="'$(XunitShowProgress)' == 'true'">$(WasmXHarnessMonoArgs) --env=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
</PropertyGroup>

<PropertyGroup Condition="'$(RunScriptCommand)' == ''">
Expand All @@ -51,7 +51,7 @@

<_InvariantGlobalization Condition="'$(InvariantGlobalization)' == 'true'">--env=DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true</_InvariantGlobalization>

<!-- There two flavors of WasmXHarnessArgs and WasmXHarnessMonoArgs, one is MSBuild property and the other is environment variable -->
<!-- There are two flavors of WasmXHarnessArgs and WasmXHarnessMonoArgs, one is MSBuild property and the other is environment variable -->
<RunScriptCommand Condition="'$(OS)' != 'Windows_NT'">$HARNESS_RUNNER $(_XHarnessArgs) %24XHARNESS_ARGS %24WasmXHarnessArgs -- $(WasmXHarnessMonoArgs) %24WasmXHarnessMonoArgs $(_InvariantGlobalization) %24_InvariantGlobalization $(_AppArgs) %24WasmTestAppArgs</RunScriptCommand>
<RunScriptCommand Condition="'$(OS)' == 'Windows_NT'">%HARNESS_RUNNER% $(_XHarnessArgs) %XHARNESS_ARGS% %WasmXHarnessArgs% -- $(WasmXHarnessMonoArgs) %WasmXHarnessMonoArgs% $(_InvariantGlobalization) %_InvariantGlobalization% $(_AppArgs) %WasmTestAppArgs%</RunScriptCommand>
</PropertyGroup>
Expand Down
47 changes: 26 additions & 21 deletions src/libraries/Common/tests/WasmTestRunner/WasmTestRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,52 +5,56 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.DotNet.XHarness.TestRunners.Common;

using Microsoft.DotNet.XHarness.TestRunners.Xunit;

public class SimpleWasmTestRunner : WasmApplicationEntryPoint
public class WasmTestRunner : WasmApplicationEntryPoint
{
// TODO: Set max threads for run in parallel
// protected override int? MaxParallelThreads => RunInParallel ? 8 : base.MaxParallelThreads;

public static async Task<int> Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine ($"No args given");
Console.WriteLine($"No args given");
return -1;
}

var testAssembly = args[0];
var runner = new WasmTestRunner();

runner.TestAssembly = args[0];

var excludedTraits = new List<string>();
var includedTraits = new List<string>();
var includedNamespaces = new List<string>();
var includedClasses = new List<string>();
var includedMethods = new List<string>();
var backgroundExec = false;
var untilFailed = false;
var minimumLogLevel = MinimumLogLevel.Info;

for (int i = 1; i < args.Length; i++)
{
var option = args[i];
switch (option)
{
case "-notrait":
excludedTraits.Add (args[i + 1]);
excludedTraits.Add(args[i + 1]);
i++;
break;
case "-trait":
includedTraits.Add (args[i + 1]);
includedTraits.Add(args[i + 1]);
i++;
break;
case "-namespace":
includedNamespaces.Add (args[i + 1]);
includedNamespaces.Add(args[i + 1]);
i++;
break;
case "-class":
includedClasses.Add (args[i + 1]);
includedClasses.Add(args[i + 1]);
i++;
break;
case "-method":
includedMethods.Add (args[i + 1]);
includedMethods.Add(args[i + 1]);
i++;
break;
case "-backgroundExec":
Expand All @@ -59,25 +63,26 @@ public static async Task<int> Main(string[] args)
case "-untilFailed":
untilFailed = true;
break;
case "-threads":
runner.IsThreadless = false;
// TODO: Enable run in parallel
// runner.RunInParallel = true;
// Console.WriteLine($"Running in parallel with {runner.MaxParallelThreads} threads.");
break;
case "-verbosity":
minimumLogLevel = Enum.Parse<MinimumLogLevel>(args[i + 1]);
runner.MinimumLogLevel = Enum.Parse<MinimumLogLevel>(args[i + 1]);
i++;
break;
default:
throw new ArgumentException($"Invalid argument '{option}'.");
}
}

var runner = new SimpleWasmTestRunner()
{
TestAssembly = testAssembly,
ExcludedTraits = excludedTraits,
IncludedTraits = includedTraits,
IncludedNamespaces = includedNamespaces,
IncludedClasses = includedClasses,
IncludedMethods = includedMethods,
MinimumLogLevel = minimumLogLevel
};
runner.ExcludedTraits = excludedTraits;
runner.IncludedTraits = includedTraits;
runner.IncludedNamespaces = includedNamespaces;
runner.IncludedClasses = includedClasses;
runner.IncludedMethods = includedMethods;

if (OperatingSystem.IsBrowser())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
</PropertyGroup>

<PropertyGroup Condition="'$(TargetOS)' == 'browser'">
<WasmXHarnessMonoArgs>--setenv=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
<XunitShowProgress>true</XunitShowProgress>
<!-- This WASM test is problematic and slow right now. This sets the xharness timeout but there is also override in sendtohelix-browser.targets -->
<WasmXHarnessTestsTimeout>01:15:00</WasmXHarnessTestsTimeout>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<TestArchiveTestsRoot>$(TestArchiveRoot)browserornodejs/</TestArchiveTestsRoot>
<TestArchiveTestsDir>$(TestArchiveTestsRoot)$(OSPlatformConfig)/</TestArchiveTestsDir>
<DefineConstants>$(DefineConstants);TARGET_BROWSER</DefineConstants>
<WasmXHarnessMonoArgs>--setenv=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
<XunitShowProgress>true</XunitShowProgress>
<!-- This WASM test is problematic and slow right now. This sets the xharness timeout but there is also override in sendtohelix-browser.targets -->
<WasmXHarnessTestsTimeout>01:15:00</WasmXHarnessTestsTimeout>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<TestArchiveTestsRoot>$(TestArchiveRoot)browserornodejs/</TestArchiveTestsRoot>
<TestArchiveTestsDir>$(TestArchiveTestsRoot)$(OSPlatformConfig)/</TestArchiveTestsDir>
<DefineConstants>$(DefineConstants);TARGET_BROWSER</DefineConstants>
<WasmXHarnessMonoArgs>--setenv=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
<XunitShowProgress>true</XunitShowProgress>

<!-- This WASM test is problematic and slow right now. This sets the xharness timeout but there is also override in sendtohelix-browser.targets -->
<WasmXHarnessTestsTimeout>01:15:00</WasmXHarnessTestsTimeout>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<TestArchiveTestsRoot>$(TestArchiveRoot)browserornodejs/</TestArchiveTestsRoot>
<TestArchiveTestsDir>$(TestArchiveTestsRoot)$(OSPlatformConfig)/</TestArchiveTestsDir>
<DefineConstants>$(DefineConstants);TARGET_BROWSER</DefineConstants>
<WasmXHarnessMonoArgs>--setenv=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
<XunitShowProgress>true</XunitShowProgress>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<!-- Use following lines to write the generated files to disk. -->
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<!-- to see timing and which test aborted the runtime -->
<WasmXHarnessMonoArgs>$(WasmXHarnessMonoArgs) --setenv=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
<XunitShowProgress>true</XunitShowProgress>
</PropertyGroup>
<!-- Make debugging easier -->
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

<WasmXHarnessMonoArgs>--working-dir=/test-dir</WasmXHarnessMonoArgs>
</PropertyGroup>
<ItemGroup Condition="'$(TargetOS)' == 'browser'">
<WasmFilesToIncludeFromPublishDir Include="$(AssemblyName).dll" TargetDir="test-dir" />
</ItemGroup>
<ItemGroup>
<Compile Include="DisabledFileLockingSwitchTests.cs" />
<Compile Include="..\FSAssert.cs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

<WasmXHarnessMonoArgs>--working-dir=/test-dir</WasmXHarnessMonoArgs>
</PropertyGroup>
<ItemGroup Condition="'$(TargetOS)' == 'browser'">
<WasmFilesToIncludeFromPublishDir Include="$(AssemblyName).dll" TargetDir="test-dir" />
</ItemGroup>
<ItemGroup>
<Compile Include="Base\BaseGetSetAttributes.cs" />
<Compile Include="Base\BaseGetSetTimes.cs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<TestRuntime>true</TestRuntime>
<IncludeRemoteExecutor>true</IncludeRemoteExecutor>
<TargetFramework>$(NetCoreAppCurrent)</TargetFramework>
<XunitShowProgress>true</XunitShowProgress>
</PropertyGroup>
<ItemGroup>
<Compile Include="Helpers.cs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<IncludeRemoteExecutor>true</IncludeRemoteExecutor>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetOS)' == 'browser'">
<WasmXHarnessMonoArgs>--setenv=XHARNESS_LOG_TEST_START=true</WasmXHarnessMonoArgs>
<XunitShowProgress>true</XunitShowProgress>
<!-- This WASM test is problematic and slow right now. This sets the xharness timeout but there is also override in sendtohelix-browser.targets -->
<WasmXHarnessTestsTimeout>01:15:00</WasmXHarnessTestsTimeout>
</PropertyGroup>
Expand Down
14 changes: 14 additions & 0 deletions src/mono/browser/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,24 @@ The wrapper script used to actually run these tests, accepts:

### Using a local build of xharness

XHarness consists of two pieces for WASM

#### 1. CLI/host

* set `XHARNESS_CLI_PATH=/path/to/xharness/artifacts/bin/Microsoft.DotNet.XHarness.CLI/Debug/net7.0/Microsoft.DotNet.XHarness.CLI.dll`

**Note:** Additional msbuild arguments can be passed with: `make .. MSBUILD_ARGS="/p:a=b"`

#### 2. Test runner running inside of the browser

All library tests are hosted by `WasmTestRunner.csproj`. The project references XHarness nuget for running tests using Xunit. To make changes and iterate quickly

- Add property `<RestoreAdditionalProjectSources>$(RestoreAdditionalProjectSources);LOCAL_CLONE_OF_XHARNESS\artifacts\packages\Debug\Shipping</RestoreAdditionalProjectSources>` in `WasmTestRunner.csproj`.
- Set environment variable in your terminal `$env:NUGET_PACKAGES="$pwd\.nuget"` (so that nuget packages are restored to local folder `.nuget`)
- Run "Pack" in the XHarness solution in Visual Studio on `Microsoft.DotNet.XHarness.TestRunners.Common` or `Microsoft.DotNet.XHarness.TestRunners.Xunit` based on your changes (it will generate a nuget package in `LOCAL_CLONE_OF_XHARNESS\artifacts\packages\Debug\Shipping`).
- Build WasmTestRunner `.\dotnet.cmd build -c Debug .\src\libraries\Common\tests\WasmTestRunner\WasmTestRunner.csproj`.
- If you need to iterate, delete Xunit or Common nuget cache `rm -r .\.nuget\microsoft.dotnet.xharness.testrunners.xunit\` or `rm -r .\.nuget\microsoft.dotnet.xharness.testrunners.common\`.

### Symbolicating traces

Exceptions thrown after the runtime starts get symbolicating from js itself. Exceptions before that, like asserts containing native traces get symbolicated by xharness using `src/mono/wasm/symbolicator`.
Expand Down
8 changes: 7 additions & 1 deletion src/mono/wasm/sln/WasmBuild.sln
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApplyUpdateReferencedAssemb
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.NET.Sdk.WebAssembly.Pack.Tasks", "..\..\..\tasks\Microsoft.NET.Sdk.WebAssembly.Pack.Tasks\Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj", "{5EEC2925-2021-4830-B7E9-72BB8B2C283D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wasi.Build.Tests", "..\..\wasi\Wasi.Build.Tests\Wasi.Build.Tests.csproj", "{3A3AEAE5-0110-45D3-89B0-B82AC430535C}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wasi.Build.Tests", "..\..\wasi\Wasi.Build.Tests\Wasi.Build.Tests.csproj", "{3A3AEAE5-0110-45D3-89B0-B82AC430535C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WasmTestRunner", "..\..\..\libraries\Common\tests\WasmTestRunner\WasmTestRunner.csproj", "{2BBE4AA8-5424-44AB-933C-66554B688872}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -81,6 +83,10 @@ Global
{3A3AEAE5-0110-45D3-89B0-B82AC430535C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A3AEAE5-0110-45D3-89B0-B82AC430535C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A3AEAE5-0110-45D3-89B0-B82AC430535C}.Release|Any CPU.Build.0 = Release|Any CPU
{2BBE4AA8-5424-44AB-933C-66554B688872}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2BBE4AA8-5424-44AB-933C-66554B688872}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2BBE4AA8-5424-44AB-933C-66554B688872}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2BBE4AA8-5424-44AB-933C-66554B688872}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down