Skip to content

[xharness] Add a 'link sdk' + 'link all' test variations for all platforms for monotouch-test.#25434

Draft
rolfbjarne wants to merge 5 commits into
mainfrom
dev/rolf/tests-linked-monotouch-test
Draft

[xharness] Add a 'link sdk' + 'link all' test variations for all platforms for monotouch-test.#25434
rolfbjarne wants to merge 5 commits into
mainfrom
dev/rolf/tests-linked-monotouch-test

Conversation

@rolfbjarne
Copy link
Copy Markdown
Member

No description provided.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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|LinkSdk variation for monotouch-test.
  • Add Release|LinkAll variation for monotouch-test.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

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>
@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

rolfbjarne and others added 3 commits May 15, 2026 08:31
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>
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>
@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

✅ [PR Build #74a2acf] Build passed (Detect API changes) ✅

Pipeline on Agent
Hash: 74a2acfffdc5d38906bcdb2508a19406063c664f [PR build]

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

✅ [PR Build #74a2acf] Build passed (Build packages) ✅

Pipeline on Agent
Hash: 74a2acfffdc5d38906bcdb2508a19406063c664f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

✅ API diff for current PR / commit

NET (empty diffs)

✅ API diff vs stable

NET (empty diffs)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: 74a2acfffdc5d38906bcdb2508a19406063c664f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

✅ [PR Build #74a2acf] Build passed (Build macOS tests) ✅

Pipeline on Agent
Hash: 74a2acfffdc5d38906bcdb2508a19406063c664f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Copy Markdown
Collaborator

🔥 [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

  • monotouch-test/iOS - simulator/Debug: LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (link sdk): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (link all): LaunchTimedOut
  • monotouch-test/iOS - simulator/Debug (LinkSdk): LaunchTimedOut
  • monotouch-test/iOS - simulator/Debug (static registrar): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (all optimizations): LaunchTimedOut
  • monotouch-test/iOS - simulator/Debug (ARM64): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (NativeAOT, ARM64): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (trimmable static registrar, NativeAOT, ARM64): LaunchTimedOut
  • monotouch-test/iOS - simulator/Debug (managed static registrar): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (managed static registrar, all optimizations): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (NativeAOT, x64): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (trimmable static registrar, NativeAOT, x64): LaunchTimedOut
  • monotouch-test/iOS - simulator/Debug (interpreter): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (interpreter): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (compat inline dlfcn): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (strict inline dlfcn, link sdk): LaunchTimedOut
  • monotouch-test/iOS - simulator/Release (NativeAOT, .NET 11 defaults): LaunchTimedOut

Html Report (VSDrops) Download

❌ monotouch tests (MacCatalyst)

1 tests failed, 19 tests passed.

Failed tests

  • monotouch-test/Mac Catalyst/Release (link all): Failed (Test run failed.
    Tests run: 3759 Passed: 3592 Inconclusive: 10 Failed: 3 Ignored: 164)

Html Report (VSDrops) Download

❌ monotouch tests (macOS)

1 tests failed, 19 tests passed.

Failed tests

  • monotouch-test/macOS/Release (trimmable static registrar, all optimizations): Failed (Test run failed.
    Tests run: 3709 Passed: 3601 Inconclusive: 5 Failed: 2 Ignored: 106)

Html Report (VSDrops) Download

Successes

✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (iOS): All 1 tests passed. (⚠️ Html Report Publish failed ⚠️) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. (⚠️ Html Report Publish failed ⚠️) Download
✅ fsharp: All 4 tests passed. Html Report (VSDrops) Download
✅ generator: All 5 tests passed. Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. Html Report (VSDrops) Download
✅ introspection: All 6 tests passed. Html Report (VSDrops) Download
✅ linker: All 44 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 18 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ sharpie: All 1 tests passed. Html Report (VSDrops) Download
✅ windows: All 3 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. (⚠️ Html Report Publish failed ⚠️) Download

macOS tests

✅ Tests on macOS Monterey (12): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Ventura (13): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Sonoma (14): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Sequoia (15): All 5 tests passed. Html Report (VSDrops) Download
✅ Tests on macOS Tahoe (26): All 5 tests passed. Html Report (VSDrops) Download

Linux Build Verification

Linux build succeeded

Pipeline on Agent
Hash: 74a2acfffdc5d38906bcdb2508a19406063c664f [PR build]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants