[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[Apple mobile] Skip unsupported tests on Apple mobile platforms - #126631

Merged
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures
Apr 10, 2026
Merged

[Apple mobile] Skip unsupported tests on Apple mobile platforms#126631
kotlarmilos merged 11 commits into
dotnet:mainfrom
kotlarmilos:fix/apple-mobile-test-failures

Conversation

@kotlarmilos

@kotlarmiloskotlarmilos commented Apr 8, 2026

Copy link
Copy Markdown
Member

Summary

Skip unsupported tests on Apple mobile platforms.

Changes

  • Exclude System.Diagnostics.TraceSource.Config.Tests.csproj
  • CustomMethodInfoTests.GetMethodImplementationFlags_ReturnsIL and CustomConstructorInfoTests.GetMethodImplementationFlags_ReturnsIL not supported on Mono
  • Set RestoreUseStaticGraphEvaluation=false to workaround known nuget issue

- PlatformDetection.IsMethodBodySupported: use IsBuiltWithAggressiveTrimming
to exclude platforms where IL bodies are stripped (NativeAOT, Apple mobile)
- ProcessTests.Start_Disposed_ThrowsObjectDisposedException: skip on
iOS/tvOS/MacCatalyst where Process.Start throws
PlatformNotSupportedException before checking disposed state
- CustomMethodInfoTests/CustomConstructorInfoTests: guard
GetMethodImplementationFlags_ReturnsIL with IsMethodBodySupported
since AOT IL stripping changes flags from IL to NoInlining
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:22
@kotlarmiloskotlarmilos changed the title Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Fix test failures on Apple mobile platforms due to IL strippingApr 8, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@kotlarmiloskotlarmilos added this to the 11.0.0 milestone Apr 8, 2026
@kotlarmilos
kotlarmilos enabled auto-merge (squash) April 8, 2026 08:26

CopilotAI 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.

Pull request overview

Fixes test failures on Apple mobile platforms (iOS/tvOS/MacCatalyst) caused by Mono AOT IL stripping altering/removing method bodies, by skipping or conditioning affected tests.

Changes:

  • Update IsMethodBodySupported to account for aggressively-trimmed builds (incl. Apple mobile).
  • Make GetMethodImplementationFlags_ReturnsIL tests conditional on method-body availability.
  • Skip ProcessTests.Start_Disposed_ThrowsObjectDisposedException on Apple mobile platforms.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

FileDescription
src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.csMakes the implementation-flags assertion conditional on PlatformDetection.IsMethodBodySupported.
src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.csSame conditional gating for constructor implementation-flags test.
src/libraries/System.Diagnostics.Process/tests/ProcessTests.csSkips a disposed-start exception test on select Apple platforms.
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.csBroadens IsMethodBodySupported to treat aggressively trimmed builds as unsupported for method-body-based tests.

Comment threadsrc/libraries/System.Diagnostics.Process/tests/ProcessTests.cs Outdated
kotlarmilosand others added 2 commits April 8, 2026 10:35
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 08:35

CopilotAI 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.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Comment threadsrc/tests/build.proj
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@vitek-karasvitek-karas 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.

Looks good
@adamsitnik can you quickly review the process test changes just to be sure?

@vitek-karas

Copy link
Copy Markdown
Member

I'm also trying to add #126635 into this since it looks like the same root cause (agressive trimming)

@adamsitnikadamsitnik 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.

Process part LGTM, thank you @kotlarmilos !

Comment threadsrc/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs Outdated
…f IsMethodBodySupported
These tests check method implementation flags, not method bodies. Mono IL
stripping changes flags from IL to NoInlining, but R2R IL stripping does
not. Skip on Mono only to preserve NativeAOT coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 8, 2026 12:45

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Comment threadsrc/tests/build.proj

CopilotAI 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.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:194

  • GetMethodImplementationFlags_ReturnsIL is now conditioned on PlatformDetection.IsNotMonoRuntime, which will still run on NativeAOT and on CoreCLR-based Apple mobile runs. Those are exactly the environments where aggressive trimming/AOT can change MethodImplAttributes away from IL, so this test may still fail. If the intent is to skip when method bodies/IL are stripped, gate this on PlatformDetection.IsMethodBodySupported (or IsNotBuiltWithAggressiveTrimming) instead of IsNotMonoRuntime, or update the assertion to accept the trimmed/AOT flags when appropriate.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:162

  • Same issue as CustomMethodInfoTests: conditioning this test on PlatformDetection.IsNotMonoRuntime will still execute it on NativeAOT (and potentially CoreCLR-based Apple mobile), where trimming/AOT can change GetMethodImplementationFlags() away from MethodImplAttributes.IL. Consider gating on PlatformDetection.IsMethodBodySupported / IsNotBuiltWithAggressiveTrimming, or broaden the expected flags for trimmed/AOT builds.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);

CopilotAI review requested due to automatic review settings April 9, 2026 18:49

CopilotAI 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.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

src/libraries/System.Reflection.Context/tests/CustomMethodInfoTests.cs:195

  • Using PlatformDetection.IsNotMonoRuntime here skips the test on all Mono configurations, but it still runs on NativeAOT (which is also affected by aggressive trimming/IL stripping). If the intent is to avoid failures when method bodies are stripped and the implementation flags change, consider conditioning on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or another trimming/AOT-specific predicate) instead so the test continues to run on non-trimmed Mono and is skipped on NativeAOT/Apple-mobile where it’s known to differ.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customMethod.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

src/libraries/System.Reflection.Context/tests/CustomConstructorInfoTests.cs:163

  • Same issue as CustomMethodInfoTests: PlatformDetection.IsNotMonoRuntime will skip on all Mono configurations but still run on NativeAOT. If this assertion is only valid when method bodies aren’t aggressively trimmed, condition it on PlatformDetection.IsNotBuiltWithAggressiveTrimming (or similar) so it’s skipped on NativeAOT/Apple-mobile but still exercised on non-trimmed Mono.
 [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotMonoRuntime))]
public void GetMethodImplementationFlags_ReturnsIL()
{
MethodImplAttributes flags = _customConstructor.GetMethodImplementationFlags();
Assert.Equal(MethodImplAttributes.IL, flags);
}

Instead of using a class-level ActiveIssue with IsBuiltWithAggressiveTrimming
(which also suppresses NativeAOT), exclude the entire project from compilation
and Helix submission for Apple mobile CoreCLR. All individual tests already
have ActiveIssue for iOS/tvOS/Android, so zero tests would run anyway.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kotlarmiloskotlarmilos changed the title [Apple mobile] Fix test failures on Apple mobile platforms due to IL stripping[Apple mobile] Skip unsupported tests on Apple mobile platformsApr 9, 2026
@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kotlarmilos

Copy link
Copy Markdown
MemberAuthor

/ba-g #126744

@kotlarmilos
kotlarmilos merged commit a74ee49 into dotnet:mainApr 10, 2026
155 of 187 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators May 10, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@kotlarmilos@vitek-karas@adamsitnik@MichalStrehovsky