Skip to content

Commit a73ff62

Browse files
authored
[tests] Add support for multiple simultaneous test variations.
1 parent bdcdac5 commit a73ff62

File tree

3 files changed

+38
-23
lines changed

3 files changed

+38
-23
lines changed

tests/common/shared-dotnet.mk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ list-variations listvariations show-variations showvariations variations help:
214214
$(Q) echo ""
215215
$(Q) $(DOTNET) build -getItem:TestVariations | jq '.Items.TestVariations[] | "\(.Identity): \(.Description)"' | sed -e 's/^"/ /' -e 's/"$$//'
216216
$(Q) echo ""
217-
$(Q) echo "Build and run a specific variation by doing $(shell tput setaf 6)make build TEST_VARIATION=variation$(shell tput sgr0)"
217+
$(Q) echo "Build and run a specific variation by doing $(shell tput setaf 6)make build TEST_VARIATION=variation$(shell tput sgr0)."
218+
$(Q) echo "It's possible to select multiple variations by separating them with a pipe character: $(shell tput setaf 6)make build TEST_VARIATION='variation1|variation2'$(shell tput sgr0)."
218219

219220
clean:
220221
rm -Rf bin obj *.binlog

tests/common/test-variations.csproj

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
<!-- This file contains various test variations valid for all test projects + some supporting logic -->
33
<Project>
44
<ItemGroup>
5+
<TestVariations Include="debug" Description="Debug ('Configuration=Debug')" />
6+
<TestVariations Include="release" Description="Release ('Configuration=Release')" />
57
<TestVariations Include="interpreter" Description="Run with the interpreter ('UseInterpreter=true')" />
68
<TestVariations Include="bundle-original-resources" Description="Bundle original resources ('BundleOriginalResources=true')" />
79
<TestVariations Include="do-not-bundle-original-resources" Description="Do not bundle original resources ('BundleOriginalResources=false')" />
@@ -11,46 +13,58 @@
1113
<TestVariations Include="coreclr" Description="Use CoreCLR ('UseMonoRuntime=false')" />
1214
</ItemGroup>
1315

14-
<PropertyGroup Condition="'$(TestVariation)' == 'interpreter'">
16+
<PropertyGroup>
17+
<_TestVariationForComparison>|$([System.String]::Join('|', $(TestVariation.Split('|', StringSplitOptions.RemoveEmptyEntries))))|</_TestVariationForComparison>
18+
</PropertyGroup>
19+
20+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|debug|'))">
21+
<Configuration>Debug</Configuration>
22+
</PropertyGroup>
23+
24+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|release|'))">
25+
<Configuration>Release</Configuration>
26+
</PropertyGroup>
27+
28+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|interpreter|'))">
1529
<UseInterpreter>true</UseInterpreter>
1630
</PropertyGroup>
1731

18-
<PropertyGroup Condition="'$(TestVariation)' == 'nativeaot'">
32+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|nativeaot|'))">
1933
<PublishAot>true</PublishAot>
2034
<_IsPublishing>true</_IsPublishing>
2135
</PropertyGroup>
2236

23-
<PropertyGroup Condition="'$(TestVariation)' == 'linksdk'">
37+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|linksdk|'))">
2438
<MtouchLink>SdkOnly</MtouchLink>
2539
<LinkMode>$(MtouchLink)</LinkMode>
2640
</PropertyGroup>
2741

28-
<PropertyGroup Condition="'$(TestVariation)' == 'linkall'">
42+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|linkall|'))">
2943
<MtouchLink>Full</MtouchLink>
3044
<LinkMode>$(MtouchLink)</LinkMode>
3145
</PropertyGroup>
3246

33-
<PropertyGroup Condition="'$(TestVariation)' == 'bundle-original-resources'">
47+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|bundle-original-resources|'))">
3448
<BundleOriginalResources>true</BundleOriginalResources>
3549
</PropertyGroup>
3650

37-
<PropertyGroup Condition="'$(TestVariation)' == 'do-not-bundle-original-resources'">
51+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|do-not-bundle-original-resources|'))">
3852
<BundleOriginalResources>false</BundleOriginalResources>
3953
</PropertyGroup>
4054

41-
<PropertyGroup Condition="'$(TestVariation)' == 'nativeaot'">
55+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|nativeaot|'))">
4256
<PublishAot>true</PublishAot>
4357
<_IsPublishing>true</_IsPublishing>
4458
</PropertyGroup>
4559

46-
<PropertyGroup Condition="'$(TestVariation)' == 'coreclr'">
60+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|coreclr|'))">
4761
<UseMonoRuntime>false</UseMonoRuntime>
4862
</PropertyGroup>
4963

5064
<Target Name="ValidateTestVariation" Condition="'$(TestVariation)' != '' And '$(OutputType)' == 'exe'" BeforeTargets="Build">
5165
<ItemGroup>
52-
<_FilteredTestVariations Include="@(TestVariations)" Condition="'%(Identity)' == '$(TestVariation)'" />
66+
<_InvalidTestVariations Include="$(TestVariation.Split('|'))" Exclude="@(TestVariations)" />
5367
</ItemGroup>
54-
<Error Text="The test variation '$(TestVariation)' is not valid. Please run 'make list-variations' to list all the valid variations." Condition="@(_FilteredTestVariations->Count()) == '0'" />
68+
<Error Text="Invalid test variation(s): '@(_InvalidTestVariations,', ')'. Please run 'make list-variations' to list all the valid variations." Condition="@(_InvalidTestVariations->Count()) != '0'" />
5569
</Target>
5670
</Project>

tests/monotouch-test/dotnet/shared.csproj

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,44 +55,44 @@
5555
<CustomEntitlements Include="com.apple.developer.pass-type-identifiers" Condition="('$(_PlatformName)' == 'iOS' Or '$(_PlatformName)' == 'tvOS') And '$(SdkIsSimulator)' == 'true'" Type="stringarray" Value=" A93A5CM278.tests/monotouch-test/Entitlements.plist" />
5656
</ItemGroup>
5757

58+
<ItemGroup>
59+
<ReferenceNativeSymbol Include="Inexistent" SymbolType="ObjectiveCClass" SymbolMode="Ignore" />
60+
<ReferenceNativeSymbol Include="x_native_field" SymbolType="Field" />
61+
</ItemGroup>
62+
63+
<Import Project="$(RootTestsDirectory)/common/shared-dotnet.csproj" />
64+
65+
<!-- Any additional variations must be added after importing shared-dotnet.csproj -->
5866
<ItemGroup>
5967
<TestVariations Include="static-registrar-all-optimizations" Description="Static registrar + all optimizations" />
6068
<TestVariations Include="static-registrar-all-optimizations-linkall" Description="Static registrar + all optimizations + Link all" />
6169
<TestVariations Include="static-registrar-optimizations-except-uithread-checks-linkall" Description="Static registrar + all optimizations + Link all" />
6270
<TestVariations Include="managed-static-registrar-all-optimizations-linkall" Description="Managed static registrar + all optimizations" />
6371
</ItemGroup>
64-
<PropertyGroup Condition="'$(TestVariation)' == 'static-registrar-all-optimizations'">
72+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|static-registrar-all-optimizations|'))">
6573
<AppBundleExtraOptions>$(AppBundleExtraOptions) --optimize:all</AppBundleExtraOptions>
6674
<Registrar>static</Registrar>
6775
<DefineConstants>$(DefineConstants);OPTIMIZEALL</DefineConstants>
6876
</PropertyGroup>
69-
<PropertyGroup Condition="'$(TestVariation)' == 'static-registrar-all-optimizations-linkall'">
77+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|static-registrar-all-optimizations|'))">
7078
<AppBundleExtraOptions>$(AppBundleExtraOptions) --optimize:all</AppBundleExtraOptions>
7179
<Registrar>static</Registrar>
7280
<LinkMode>Full</LinkMode>
7381
<DefineConstants>$(DefineConstants);OPTIMIZEALL</DefineConstants>
7482
</PropertyGroup>
75-
<PropertyGroup Condition="'$(TestVariation)' == 'static-registrar-optimizations-except-uithread-checks-linkall'">
83+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|static-registrar-optimizations-except|'))">
7684
<AppBundleExtraOptions>$(AppBundleExtraOptions) --optimize:all,-remove-uithread-checks</AppBundleExtraOptions>
7785
<Registrar>static</Registrar>
7886
<LinkMode>Full</LinkMode>
7987
<DefineConstants>$(DefineConstants);OPTIMIZEALL</DefineConstants>
8088
</PropertyGroup>
81-
<PropertyGroup Condition="'$(TestVariation)' == 'managed-static-registrar-all-optimizations-linkall'">
89+
<PropertyGroup Condition="$(_TestVariationForComparison.Contains('|managed-static-registrar-all-optimizations|'))">
8290
<AppBundleExtraOptions>$(AppBundleExtraOptions) --optimize:all</AppBundleExtraOptions>
8391
<Registrar>managed-static</Registrar>
8492
<LinkMode>Full</LinkMode>
8593
<DefineConstants>$(DefineConstants);OPTIMIZEALL</DefineConstants>
8694
</PropertyGroup>
8795

88-
<ItemGroup>
89-
<ReferenceNativeSymbol Include="Inexistent" SymbolType="ObjectiveCClass" SymbolMode="Ignore" />
90-
<ReferenceNativeSymbol Include="x_native_field" SymbolType="Field" />
91-
</ItemGroup>
92-
93-
<Import Project="$(RootTestsDirectory)/common/shared-dotnet.csproj" />
94-
95-
9696
<ItemGroup>
9797
<ProjectReference Include="$(RootTestsDirectory)\EmbeddedResources\dotnet\$(_PlatformName)\EmbeddedResources.csproj" />
9898
<ProjectReference Include="$(RootTestsDirectory)\bindings-test\dotnet\$(_PlatformName)\bindings-test.csproj" />

0 commit comments

Comments
 (0)