Repository navigation
[ci] Remove redundant CoreCLRTrimmable test lane - #13011
Merged
Merged
Conversation
Trimmable typemaps are the default for ordinary CoreCLR runs. Drop the separate explicit invocation of the same instrumentation project and configuration from the shared package-test stage. Keep the Debug/Release APK/AAB runs, NativeAOT, isolated JNI leak runs, JCW tests, and product typemap support unchanged. Co-authored-by: Copilot App <[email protected]>
Member
Author
|
@dalexsoto stamp |
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The narrow deletion preserves equivalent coverage through retained CoreCLR runs, with no blocking issues identified.
Review effort: Balanced
Findings: None
What changed in this PR
Removes the redundant CoreCLRTrimmable invocation from the shared package-test stage, since ordinary CoreCLR runs already use trimmable typemaps.
Changes:
- Removes duplicate instrumentation coverage across public, official, and internal pipelines.
- Preserves all other test invocations and product defaults.
| File | Description |
|---|---|
build-tools/automation/yaml-templates/stage-package-tests.yaml |
Deletes the redundant CoreCLRTrimmable invocation. |
1 of 46 tasks
dalexsoto
approved these changes
Oct 6, 2026
dalexsoto
left a comment
Member
There was a problem hiding this comment.
Stamping as requested by @simonrozsival; no code review performed.
2 of 3 tasks
simonrozsival
added a commit
that referenced
this pull request
Oct 7, 2026
…13024) The trimmable type map is the sole supported implementation after #12889 and #12890. `$(AndroidTypeMapImplementation)` no longer selects between working implementations, but still adds conditions, defaults, validation, and redundant test parameters throughout the build. Remove the selector rather than preserving an extension point for a hypothetical future implementation: - Remove its defaults, property-cache entry, target/import conditions, and UCO binding prerequisite checks. Always select `java_runtime_trimmable.jar`; retain application/library, runtime, trimming, design-time, and inner-RID guards. - Simplify constant typemap test parameters while retaining the CoreCLR/NativeAOT matrices. Make the callback fixture reference and callback/manifest test sources unconditional, and remove the obsolete `CoreCLRTrimmable` test flavor default. - Replace selector-validation tests with coverage that applications still generate typemaps and libraries do not, regardless of obsolete assignments. Add standalone R8 target regression coverage for omitted, empty, `llvm-ir`, `trimmable`, and unknown values. - Retire XA4267, remove selector wording from XA4265/XA4266, and update build-property documentation, contributor guidance, and test commands. Generated non-English localization files are unchanged. **Compatibility:** Existing assignments to `$(AndroidTypeMapImplementation)` are now ignored, including previously rejected `llvm-ir`, unknown, and explicitly empty global values. The documentation retains an obsolete-property notice so users can remove those assignments. No linked issue; this follows the legacy typemap removal PRs and the redundant test-lane removal in #13011. ## Validation After merging `main` and resolving review feedback, expanded standalone coverage: **98 passed, 7 skipped, 0 failed**. This includes the obsolete-property regression cases and the new transferred-reference activation tests from `main`. The skipped tests require locally built Android assemblies. NativeAOT target cases were exercised with the NDK tools. ```bash dotnet test src/Microsoft.Android.Build.Tasks/Tests/Microsoft.Android.Build.Tasks.Tests/Microsoft.Android.Build.Tasks.Tests.csproj -v minimal -p:_NativeAotLlvmReadObjPath=/Users/simon/android-toolchain/ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readobj --filter 'FullyQualifiedName~TypeMapProguardTargetsTests|FullyQualifiedName~GenerateTrimmableTypeMapTests|FullyQualifiedName~TrimmableTypeMapIncrementalTests|FullyQualifiedName~TrimmableTypeMapManifestAliasTests|FullyQualifiedName~TrimmableTypeMapRidCallbackTests|FullyQualifiedName~ExtractTypeMapKeysFromAssembliesTests|FullyQualifiedName~ExtractTypeMapKeysFromNativeAotObjectTests|FullyQualifiedName~GenerateTypeMapProguardConfigurationTests|FullyQualifiedName~GenerateTypeMapMemberProguardConfigurationTests|FullyQualifiedName~TransferredReferenceActivationTests' ``` The earlier focused obsolete-property regression run passed **all 5 cases**: ```bash dotnet test src/Microsoft.Android.Build.Tasks/Tests/Microsoft.Android.Build.Tasks.Tests/Microsoft.Android.Build.Tasks.Tests.csproj -v minimal --filter 'Name~AssemblyTargetConsumesLinkedMetadataAcrossRidsAndEmptyStubs' ``` `git diff --cached --check` passed. All 12 modified XML files parsed successfully. Merge-resolution checks confirmed all 84 `Compile` items and five `ProjectReference` items from `main` are preserved; the five formerly gated runtime source entries (including the new `TransferredReferenceTests`) and callback project reference are unconditional. The initial implementation also verified unchanged target ordering/incremental inputs and outputs, preservation of non-selector guards and 169 explicit test cases. **Full SDK validation is blocked:** Retrying `make prepare && make all` after the merge failed during preparation with NU1102 because the configured feeds cannot supply `Microsoft.NETCore.App.Ref` version `10.0.13`; `make all` did not run. Earlier attempts using `make prepare MSBUILD_ARGS=-p:DotNetPreviewTool=/usr/local/share/dotnet/dotnet` and `dotnet build src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Xamarin.Android.Build.Tests.csproj -v minimal -p:DotNetStableTargetFramework=net11.0` failed for the same dependency. Full-build application/library regressions, device integration tests, and on-device runtime tests have therefore not run locally. ---- Pull Request [title](https://github.com/dotnet/android/blob/main/Documentation/workflow/commit-messages.md#commit-summary) and [description](https://github.com/dotnet/android/blob/main/Documentation/workflow/commit-messages.md#commit-body) should follow the [`commit-messages.md` workflow documentation](https://github.com/dotnet/android/blob/main/Documentation/workflow/commit-messages.md), and in particular should include: - [x] Useful description of *why the change is necessary*. - [ ] Links to issues fixed - [x] Unit tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Trimmable typemaps are now the default for ordinary CoreCLR runs. Remove the separate
Mono.Android.NET_Tests-CoreCLRTrimmableinvocation from the shared package-test stage: it runs the same instrumentation project, configuration, and AAB path as the retained ordinary CoreCLR invocation, with only an explicitAndroidTypeMapImplementation=trimmablecoverage-setting argument.The shared stage is used by the public, official, and internal pipelines, so the deletion applies consistently to all three. The public pipeline's scheduled runs also consume this stage. The separate nightly emulator matrix has no explicit CoreCLRTrimmable invocation and is unchanged.
All other stage content is unchanged: ordinary CoreCLR Debug/Release and APK/AAB variants, NativeAOT, isolated JNI-reference-leak runs, and JCW tests remain. No product properties, test cases, conditional trimmable fixtures, or imported Java.Interop tests are removed. The project's existing
TestsFlavor=CoreCLRTrimmablenaming default is preserved; it is not a separate CI invocation and does not select different tests.Context: #12721 mentions the old lane in runner-migration criteria; this PR does not change that migration or close the issue.
Local validation:
python3 /Users/simon/.copilot/session-state/b1f4d38e-682a-43e0-af90-8c5b4a2081d1/files/validate-coreclr-lane.py— passed. This session-local static checker parsed all 49 automation YAML files; compared the stage against baseline2a20d9989a79d50e3390ebd1eb4f90e311fa1ec6, proving exactly one invocation was removed and all retained structure/parameters were unchanged; checked shared-stage caller parameters and retained instrumentation arguments against their template declarations; checked no automation CoreCLRTrimmable references remained; and checked the SDK CoreCLR/trimmable defaults, default-target import, and unchanged test project/fixtures.git diff --check— passed before committing.git grep -n CoreCLRTrimmable— only the intentionally preserved project flavor default remains; no pipeline references.No Azure pipeline execution, full SDK build, or device test run was performed for this YAML-only deletion. Local parsing/static checks do not substitute for Azure's server-side template expansion.
Pull Request
title and
description
should follow the
commit-messages.mdworkflow documentation, and in particular should include:No issue is closed and no unit-test behavior changes; validation is limited to the focused pipeline checks above.