[Apple][CoreCLR] Runtime-test merged runners skip every test: executable path is passed as args[0] and used as the test filter
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 78/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- csharp, ios, objective-c
- Domain
- mobile-dev, testing-qa
Research direction
Start with src/tasks/AppleAppBuilder/Templates/runtime-coreclr.m and inspect get_managed_args in util.m, then compare the CoreCLR argument handling with the Mono host and corerun. Verify the runtime-test lanes *_AllSubsets_CoreCLR_RuntimeTests no longer treat the executable path as a test filter and begin reporting executed tests instead of skipping every test.
Written by the indexing model from the issue text.
Description
Description
On CoreCLR for iOS, iOS simulator, tvOS and maccatalyst, the runtime-test lanes (*_AllSubsets_CoreCLR_RuntimeTests in runtime-extra-platforms) report every test as skipped, with reason "No Known Skip Reason". No runtime tests actually run on these platforms.
Examples from build 1613653 (main, 2026-09-27):
| Lane | Helix job | Regression_o_3 |
Regression_2 |
|---|---|---|---|
| maccatalyst-arm64 | 0b9c9ad9-cb7f-448b-9b7b-b93a5523d429 |
0 pass / 167 skip | 0 pass / 107 skip |
| iossimulator-arm64 | 37c0646d-11ad-4a07-a440-68280a0a1d99 |
0 pass / 167 skip | 0 pass / 107 skip |
| tvos-arm64 | aa23176f-37b8-42cc-946b-01f8805c8120 |
0 pass / 167 skip | 0 pass / 107 skip |
Other tvOS work items (Regression_1, Regressions, Methodical_d1, threading_group1, Interop) are also 0 passed and all skipped. The same holds in build 1598688 (2026-09-16). The app log shows [Runner executing: Run everything] followed by Tests run: 167 Passed: 0 ... Skipped: 167 within about 80 ms.
Cause (from code)
- The CoreCLR Apple host
src/tasks/AppleAppBuilder/Templates/runtime-coreclr.mbuilds the managed arguments withget_managed_args(util.m). That copies all of[[NSProcessInfo processInfo] arguments], whose element 0 is the executable path. - It passes that whole array to
coreclr_execute_assembly, whoseargvbecomes managedMain'sargs. Soargs[0]is the executable path. The Mono host (runtime.m) passes the same array tomono_jit_exec, which treatsargv[0]as the program name, so Mono is unaffected. - The generated merged-runner
Mainfor mobile callsXHarnessRunnerLibrary.RunnerEntryPoint.RunTests(RunTests, "<asm>", args.Length != 0 ? args[0] : null)(XUnitWrapperGenerator.cs).AppleEntryPointtreats that value as the only method to run:runner.SkipMethod(_methodNameToRun, isExcluded: false). - No test's fully qualified name matches the executable path, so
TestFilter.ShouldRunTestreturns false for every test. Each one is reported skipped with an empty reason, whichTestSummaryprints as "No Known Skip Reason".
The library test lanes are not affected. AppleTestRunner only acts on testlib: and --verbose arguments.
Proposed fix
In runtime-coreclr.m, pass the managed arguments without the program name, matching corerun and the dotnet host:
coreclr_execute_assembly (coreclr_handle, coreclr_domainId, argi - 1, managed_argv + 1, path, &res);
Once fixed, these lanes will start running tests, and new failures are likely to show up.
[!NOTE]
This issue was generated with GitHub Copilot.
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 617
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dotnet/runtime
-
area-System.Linq untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
dotnet/runtime#134736 · 3 comments ·
Maintainers usually reply within 1 day
-
area-System.Numerics.Tensors untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
dotnet/runtime#134691 · 2 comments ·
Maintainers usually reply within 1 day
-
area-System.Threading blocking-clean-ci Known Build Error untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
dotnet/runtime#134679 · 4 comments ·
Maintainers usually reply within 1 day
-
ARM64: conditional compare rejects negative immediates the emitter can already encode as `ccmn`Openarea-CodeGen-coreclr performance
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
dotnet/runtime#134663 · 1 comment ·
Maintainers usually reply within 1 day
-
area-System.Security untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
dotnet/runtime#134659 · 1 comment ·
Maintainers usually reply within 1 day
Similar issues
-
[Simple] NavigationBar primary commands do not render AppBarButton.Content when it is a UIElementOpencontrol/navigationbar kind/bug triage/untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
unoplatform/uno.toolkit.ui#1652 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
microsoft/copilot-camp#1053 ·
Maintainers usually reply within 1 day
-
bug effort:S P3
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
nightscout/nocturne#1861 ·
Maintainers usually reply within 1 day
-
agentic-workflows area/Docs partner/agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
microsoft/fluentui-blazor#5364 ·
Maintainers usually reply within 1 day