Skip to content

[ci] Remove redundant CoreCLRTrimmable test lane - #13011

Merged
simonrozsival merged 1 commit into
mainfrom
simonrozsival-drop-duplicate-coreclr-lane
Oct 6, 2026
Merged

simonrozsival merged 1 commit into
mainfrom
simonrozsival-drop-duplicate-coreclr-lane

Conversation

@simonrozsival

Copy link
Copy Markdown
Member

Trimmable typemaps are now the default for ordinary CoreCLR runs. Remove the separate Mono.Android.NET_Tests-CoreCLRTrimmable invocation 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 explicit AndroidTypeMapImplementation=trimmable coverage-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=CoreCLRTrimmable naming 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 baseline 2a20d9989a79d50e3390ebd1eb4f90e311fa1ec6, 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.md workflow documentation, and in particular should include:

  • Useful description of why the change is necessary.
  • Links to issues fixed
  • Unit tests

No issue is closed and no unit-test behavior changes; validation is limited to the focused pipeline checks above.

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]>
Copilot AI balanced review requested due to automatic review settings October 6, 2026 07:39
@simonrozsival
simonrozsival enabled auto-merge (squash) October 6, 2026 07:40
@simonrozsival

Copy link
Copy Markdown
Member Author

@dalexsoto stamp

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@dalexsoto dalexsoto left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stamping as requested by @simonrozsival; no code review performed.

@simonrozsival
simonrozsival merged commit 49492d9 into main Oct 6, 2026
45 checks passed
@simonrozsival
simonrozsival deleted the simonrozsival-drop-duplicate-coreclr-lane branch October 6, 2026 10:07
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants