[TrimmableTypeMap] Add CoreCLR Mono.Android.NET-Tests lane plumbing#11091
Open
simonrozsival wants to merge 14 commits intodev/simonrozsival/root-manifest-referenced-typesfrom
Open
Conversation
f8106b0 to
a437455
Compare
d5aefaa to
3a8d509
Compare
Base automatically changed from
dev/simonrozsival/trimmable-runtime-fixes
to
main
April 10, 2026 22:50
1814a6d to
d0e30f6
Compare
17b123b to
e2c70fd
Compare
Use _AndroidTypeMapImplementation=trimmable directly instead of a MonoAndroidTypeMapFlavor wrapper property. This is consistent with the actual build system property used by the typemap targets. - _AndroidTypeMapImplementation=trimmable in CI yaml and test csproj - UseMonoRuntime=false set when _AndroidTypeMapImplementation=trimmable - TestsFlavor=CoreCLRTrimmable for result file naming - ExcludeCategories: NativeTypeMap, TrimmableIgnore, SSL - ExcludedTestNames for Java.Interop-Tests JavaObject-based fixtures Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
e2c70fd to
87c531f
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds CI/test-lane plumbing to run Mono.Android.NET-Tests on CoreCLR with the trimmable typemap implementation, keeping currently-unsupported test buckets explicitly excluded to maintain green coverage while follow-up runtime/generator work lands separately.
Changes:
- Adds a new
CoreCLRTrimmableAPK instrumentation lane and pins the existingCoreCLRlane tollvm-ir. - Updates
Mono.Android.NET-Tests.csprojto default to CoreCLR + exclude trimmable-specific buckets when_AndroidTypeMapImplementation=trimmable. - Centralizes additional trimmable-mode runtime test exclusions in
NUnitInstrumentation, and adjusts a few Java.Interop tests/projects to avoid unsupported coverage.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/Mono.Android-Tests/Mono.Android-Tests/Xamarin.Android.RuntimeTests/NUnitInstrumentation.cs | Adds runtime-switch-driven exclusions for categories and specific Java.Interop test names under trimmable typemap. |
| tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj | Sets defaults/exclusions for trimmable typemap runs (incl. CoreCLRTrimmable flavor). |
| tests/Mono.Android-Tests/Mono.Android-Tests/Java.Interop/JnienvTest.cs | Marks specific tests as TrimmableIgnore. |
| tests/Mono.Android-Tests/Mono.Android-Tests/Java.Interop/JavaObjectExtensionsTests.cs | Marks a specific test as TrimmableIgnore (and normalizes file header). |
| tests/Mono.Android-Tests/Java.Interop-Tests/Java.Interop-Tests.NET.csproj | Removes JniTypeUtf8Test.cs from compilation due to unsupported APIs in the product assembly. |
| build-tools/automation/yaml-templates/stage-package-tests.yaml | Updates CoreCLR lane args and adds the new CoreCLRTrimmable lane. |
...s/Mono.Android-Tests/Mono.Android-Tests/Xamarin.Android.RuntimeTests/NUnitInstrumentation.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
simonrozsival
commented
Apr 12, 2026
Member
Author
simonrozsival
left a comment
There was a problem hiding this comment.
🤖 AI Review Summary
Verdict: ✅ LGTM
Found 1 suggestion:
- 💡 Code organization — the trimmable category filtering is now split between
Mono.Android.NET-Tests.csprojandNUnitInstrumentation.cs(NUnitInstrumentation.cs:29). Keeping one source of truth would make the temporary exclusions easier to retire.
The lane wiring itself looks good, and I like that the unsupported cases stay explicit instead of being hidden behind runtime fallback behavior.
Review generated by android-reviewer from review guidelines.
...s/Mono.Android-Tests/Mono.Android-Tests/Xamarin.Android.RuntimeTests/NUnitInstrumentation.cs
Show resolved
Hide resolved
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
Summary
Mono.Android.NET-Testswith_AndroidTypeMapImplementation=trimmableandUseMonoRuntime=falseon CoreCLRIn scope for this PR
_AndroidTypeMapImplementation=trimmableMono.Android.NET-Tests.csprojNUnitInstrumentationexclusions for the currently unsupported trimmable buckets, with the temporary Java.Interop-specific skips kept centralized in the test runner to avoid submodule churn:ExportSSLTrimmableIgnoreJnienvTest.csandJavaObjectExtensionsTests.csthat keep the remaining gaps visible and reviewableThe existing non-Mono
CoreCLRIgnore/NTLMfiltering in the test project remains as-is; this PR does not expand it.Current validation state
Manual device instrumentation on the current branch is green with the
intentional exclusions:
./dotnet-local.sh build -t:RunTestApp ...still reports aharness/performance-data collection issue after the run, but this PR keeps
that failure surface visible instead of masking it with runtime fallback
logic.
Current exclusion footprint
The current device run reports
skipped=6, but that is not the same as thetests filtered out by the exclusion lists. Right now the temporary exclusions
cover 63 unique test methods:
SSL: 14Export: 2CoreCLRIgnore: 3 (existing non-Mono filter)TrimmableIgnore: 3JavaObjectTest: 12JavaObjectExtensionsTests: 9JniPeerMembersTests: 9JniTypeManagerTests: 5JavaPeerableExtensionsTests: 4InvokeVirtualFromConstructorTests: 3JavaExceptionTests.InnerExceptionIsNotAProxy: 1JniValueMarshaler_object_ContractTests: 1There is 1 overlap between those mechanisms, which is why the totals are
20 + 44 but 63 unique filtered tests overall.
Explicitly out of scope / follow-up work
#11037Local usage