[xharness] Add a 'link sdk' + 'link all' test variations for all platforms for monotouch-test.#25434
[xharness] Add a 'link sdk' + 'link all' test variations for all platforms for monotouch-test.#25434rolfbjarne wants to merge 5 commits into
Conversation
…forms for monotouch-test.
There was a problem hiding this comment.
Pull request overview
This PR extends the xharness Jenkins test matrix for monotouch-test by introducing additional linker coverage across all platforms, adding explicit Link SDK and Link All runs (as Release variations). This fits into the tests/xharness infrastructure that defines how CI expands a single test project into multiple build/run configurations.
Changes:
- Add
Release|LinkSdkvariation formonotouch-test. - Add
Release|LinkAllvariation formonotouch-test.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Use IsLinkAny instead of IsLinkAll for trimming guards, since SDK-level trimming (linksdk) can also remove framework references, properties, and delegate mismatch checking code from SDK assemblies. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
The trimmer removes the block proxy Invoke method (SDRegistrarTestBlock.Invoke) which is looked up via reflection by the dynamic registrar. This is a known limitation of linkall trimming with reflection-based block marshaling. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This reverts commit c02d02c.
The PreserveBlockCodeStep only handled old-style block proxy types (with a Handler field and [MonoPInvokeCallback] attribute on Invoke). New-style block proxy types use [UnmanagedCallersOnly] on Invoke with no Handler field. When using linkall + dynamic registrar (the default on iOS simulator), the existing MarkForStaticRegistrar[Step] does not run (gated on RegistrarMode.Static), so the Invoke method was trimmed. At runtime, the reflection lookup in Blocks.GetBlockForDelegate would then fail with MX8060. Extend PreserveBlockCodeStep to also detect and preserve new-style block proxy Invoke methods, matching on [UnmanagedCallersOnly] and [UserDelegateType] attributes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
✅ [PR Build #74a2acf] Build passed (Detect API changes) ✅Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
✅ [PR Build #74a2acf] Build passed (Build packages) ✅Pipeline on Agent |
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
✅ [PR Build #74a2acf] Build passed (Build macOS tests) ✅Pipeline on Agent |
🔥 [CI Build #74a2acf] Test results 🔥Test results❌ Tests failed on VSTS: test results 0 tests crashed, 20 tests failed, 163 tests passed. Failures❌ monotouch tests (iOS)18 tests failed, 0 tests passed.Failed tests
Html Report (VSDrops) Download ❌ monotouch tests (MacCatalyst)1 tests failed, 19 tests passed.Failed tests
Html Report (VSDrops) Download ❌ monotouch tests (macOS)1 tests failed, 19 tests passed.Failed tests
Html Report (VSDrops) Download Successes✅ cecil: All 1 tests passed. Html Report (VSDrops) Download macOS tests✅ Tests on macOS Monterey (12): All 5 tests passed. Html Report (VSDrops) Download Linux Build VerificationPipeline on Agent |
No description provided.