Skip to content

[CI Doctor] PR #34498 — Microsoft.Maui.Client.UnitTests failing on Windows Helix + macOS Release build error #34677

@github-actions

Description

@github-actions

Summary

PR #34498 ("Add Microsoft.Maui.Client tool for cross-platform device and SDK management") introduced a new Microsoft.Maui.Client.UnitTests test project. These tests are failing with exit code 1 on Windows Helix in both Debug and Release configurations. Additionally, the macOS Release build fails compiling Maui.Controls.Sample.csproj for the net10.0-ios target framework.

Build Details

Field Value
Pipeline maui-pr (Definition 302)
Build #1353764
Branch refs/pull/34498/merge
PR #34498 — "Add Microsoft.Maui.Client tool for cross-platform device and SDK management"
Commit 3172ea61cdae8365d8fbd17c4d2885d34c0c1795
Duration 2026-03-26T13:55:10Z → 2026-03-26T15:54:49Z (~2h)
Author @rmarinho

Failed Jobs

# Job Error Helix?
1 Windows Helix Unit Tests (Debug) Microsoft.Maui.Client.UnitTests.dll exit code 1 ✅ Yes
2 Windows Helix Unit Tests (Release) Microsoft.Maui.Client.UnitTests.dll exit code 1 ✅ Yes
3 Build macOS (Release) CS0246/CS0101/CS0115 in Maui.Controls.Sample for net10.0-ios No

Error Details

Failure 1 & 2 — Windows Helix Unit Tests (Debug + Release)

Helix Job IDs:

  • Debug: b7f27aa0-8338-41de-8277-6c94d15bd6cc and e28ec8b6-cf95-4028-a015-38a245715dfa
  • Release: bdc02c81-f17a-4b77-9848-1b2f807d7c46 and 7b3c5204-734d-4a05-90bc-f96d81f7f7f3

Queue: Windows.10.Amd64.Open
Exit code: 1 (test failure)

The PR adds src/Tools/tests/Microsoft.Maui.Client.UnitTests/ and registers it in eng/helix.proj:

(XUnitProject Include="$(RepoRoot)src/Tools/tests/Microsoft.Maui.Client.UnitTests/Microsoft.Maui.Client.UnitTests.csproj" /)
```

**Likely root causes (most probable first):**

1. **`DoctorService` calls live processes** — `DoctorServiceTests.RunAllChecksAsync_IncludesDotNetChecks()` creates a real `DoctorService` that calls `dotnet workload list` and `dotnet --version`. On Helix Windows agents, `dotnet workload list` could fail or produce output that triggers assertion failures (`CheckStatus.Error` propagation).

2. **`AndroidCommandsTests` `Assert.Empty(parseResult.Errors)`** — Tests like `InstallCommand_ParsesCommaSeparatedPackages` use `System.CommandLine 2.0.5` (newly added). Semicolons in package strings like `build-tools;35.0.0` may be parsed differently or trigger parse errors with this version.

3. **`ServiceConfigurationTests.Program_Services_CanBeOverridden`** — Calls `Program.Services = testProvider` and `Program.ResetServices()`. If `Program` has side effects at startup on Windows Helix, this could fail.

**Blob log (requires auth):**
```
(helixr1107v0xdeko0k025g8.blob.core.windows.net/redacted)
```

---

### Failure 3 — Build macOS (Release)

**Log:** Job log 159 in build [#1353764](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1353764)

The macOS Release build fails compiling `Maui.Controls.Sample.csproj` for `TargetFramework=net10.0-ios`:

```
Platforms/Android/MainActivity.cs(1,7): error CS0246: The type or namespace name 'Android' could not be found [net10.0-ios]
Platforms/MacCatalyst/AppDelegate.cs(14,15): error CS0101: The namespace already contains a definition for 'AppDelegate' [net10.0-ios]
Platforms/MacCatalyst/Main.cs(6,15): error CS0101: The namespace already contains a definition for 'Application' [net10.0-ios]
Pages/Core/DragAndDropBetweenLayouts.xaml.cs(31,27): error CS0115: 'OnAppearing()': no suitable method found to override [net10.0-ios]
Pages/Core/FlyoutPageGallery.xaml.cs(26,27): error CS0115: 'OnNavigatedTo(NavigatedToEventArgs)': no suitable method found to override [net10.0-ios]
  • Android platform files (Platforms/Android/) are being compiled in the net10.0-ios TFM context
  • MacCatalyst files (Platforms/MacCatalyst/) cause duplicate class definitions for the iOS TFM
  • Page override methods (OnAppearing, OnNavigatedTo, etc.) report "no suitable method found"

⚠️ Note: The macOS Debug build succeeds. The main branch also has recent Helix failures (different tests). This macOS Release failure may be pre-existing — not specific to this PR — since the PR does not modify Controls.Sample.


Root Cause Assessment

# Failure Category Confidence
1-2 Microsoft.Maui.Client.UnitTests Helix Code — new tests fail on CI High
3 macOS Release Controls.Sample CS errors Infrastructure / Pre-existing Medium

Recommended Actions

For PR #34498 author (@rmarinho):

  • Identify which tests fail — Download the Helix console log from the blob URL above or trigger a new run with --no-restore verbose to see exact failure messages
  • Mock dotnet process calls in DoctorServiceTestsRunAllChecksAsync_IncludesDotNetChecks calls real processes; use dependency injection / mock ProcessRunner or guard with [SkippableFact] / environment check
  • Verify System.CommandLine 2.0.5 parsing behavior — The semicolon-containing package strings in AndroidCommandsTests may behave differently; run tests locally against the actual System.CommandLine version
  • Confirm macOS Release failure is pre-existing — Check if the same errors appear in main-branch builds before this PR was created; if pre-existing, track separately

Related

Warning

⚠️ Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • helixr1107v0xdeko0k025g8.blob.core.windows.net

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "helixr1107v0xdeko0k025g8.blob.core.windows.net"

See Network Configuration for more information.

Note

🔒 Integrity filtering filtered 3 items

Integrity filtering activated and filtered the following items during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

🩺 Diagnosis by CI Failure Doctor for dotnet/maui

  • expires on Apr 2, 2026, 4:17 PM UTC

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions