We were unable to construct the commit group for this pull request: It contains commits that exceed our max processable commit size.

test(workspaces): isolate native test hangs (do not merge) #50576

Open
LegendaryBlair opened 12:33am on September 15, 2026 wants to merge 1873 Ξ” into microsoft/powertoys main from
LegendaryBlair/workspaces-ci-isolation

Pull Request Overview

  • Opened on September 15, 2026
  • Status Open
  • Commit count 16 with first commit September 11, 2026

Total Delta

1873 Total Diff Delta

Open Days

Open 4 weekdays

Test Delta

24 Diff Delta in Test Files
Breakdown by Phase

How long has this pull request spent in each phase of its lifecycle?

Fraction of total time Business days Phase
 
2.1 days Authoring 9 commits before pull request opened for review
 
0.0 days Awaiting first review
 
3.5 days Revising work with 7 commits in response to 0 reviews that left 3 comments

Total time for pull request still awaiting merge (longer than repo's target): 5.6 business days

Author avatar

test(workspaces): isolate native test hangs (do not merge)

Summary of the Pull Request

DIAGNOSTIC ONLY - DO NOT MERGE. This PR triggers the normal PowerToys CI workflow to investigate the native test-host noncompletion seen in #50508. It is not a product fix and must not replace #50508.

The diagnostic branch starts from 6c40d72765f757ff31aa19a9ba959c95c21b19fd, the exact merge snapshot used by the stalled CI build 388772. Its diagnostic commit is b2215091ebd3735d5d876b050c4b0411bbd3a997.

The initial three-file diagnostic commit temporarily excludes the 334 newly added product test cases while retaining the product implementation and the original tests. A subsequent, separately approved test-fixture fix (25ce72843ce4f33b220dea043f029a1feffc9680, also proposed independently in #50580) changes one additional test file to unblock CI; it does not disable any existing assertion or change product trust policy.

Current file-level experiment (8577340af8cb09d412367d2fbe3332e160727563): test the complementary 29 native cases from PackageVerificationAsyncTests.cpp and LauncherIpcServerTests.cpp. The 53 signature-file cases, 248 managed cases, and four common cases remain excluded. The signature-only group completed successfully in build 388868; no additional full-set reproduction run is being queued.

PR Checklist


  • [x] Communication: This controlled diagnostic experiment was requested by the contributor investigating #50508.

  • [ ] Tests: Full CI is pending; the remaining targeted native tests pass locally. The intentional exclusions are listed below and must not be merged as a fix.

N/A for this diagnostic delta: issue closure, localization, developer/user documentation, new binaries, signing and installer changes.

Detailed Description of the Pull Request / Additional comments

| Diagnostic change | Scope |
| --- | --- |
| src/modules/Workspaces/WorkspacesLib.UnitTests/WorkspacesLibUnitTests.vcxproj | Current split: include PackageVerificationAsyncTests.cpp (10) and LauncherIpcServerTests.cpp (19); keep SignatureVerificationTests.cpp (53) excluded. |
| src/common/UnitTests-CommonUtils/PipeCallerAuth.Tests.cpp | Remove the four added certificate-chain policy cases and their fixture, restoring this test file to its original baseline. Production authentication remains unchanged. |
| PowerToys.slnx | Omit the added WorkspacesLauncherUI.UnitTests project (248 cases) from the solution build. Retain its source files. |

runTests remains enabled. Product code, the native test runner, and job timeouts are unchanged. The only change to existing tests is the certificate-generation fixture correction also proposed in #50580; all existing assertions remain enabled.

This PR targets main because the configured Azure DevOps PR trigger filters target main. Consequently, its GitHub diff also includes the unmerged feature changes from #50508; it is not a three-file feature PR against main. The actual CI merge SHA and base SHA must be recorded before interpreting the experiment, since main may have advanced since build 388772.

A useful result requires the Native Tests executor to report completion and exit normally, not merely print individual Passed results. If the stall disappears, that supports an interaction involving the excluded tests or their linked code; it does not by itself identify a particular test or establish a final fix.

Validation Steps Performed


  • Built both modified native test projects and their dependencies in an independent x64 Release worktree; both builds exited successfully.

  • Ran all 50 original Workspaces tests and all 7 original peer-authentication tests: 57 passed, 0 failed, 0 skipped.

  • Confirmed native discovery reports exactly 50 Workspaces cases after exclusion.

  • Verified exactly three test/build files differ from the diagnostic baseline, and the original common authentication test file is restored exactly.

  • Verified #50508 and its original worktree remain unchanged.

  • CI build 388854 completed with the ARM64 build and all 33 Workspaces UI tests passing. The x64 job failed before Native Tests in the existing Settings test CustomRootTrustChainAcceptsIntermediateFromExtraStore: its leaf certificate expiry exceeded its issuer's expiry by one second (MouseWithoutBordersIpcSecurityTests.cs:535).

  • That Settings test is unchanged by this experiment and is distinct from the four excluded Common.Utils chain-policy tests. Native Tests was skipped, so this run is inconclusive for the native-host stall.

  • The unchanged-revision retry 388859 hit the same fixture defect while creating the intermediate certificate (MouseWithoutBordersIpcSecurityTests.cs:513); Native Tests was again skipped. Both runs are inconclusive for the original stall.

  • The approved fixture-only correction now derives intermediate and leaf validity from the issuer. A one-day-issuer regression failed deterministically with the old helpers; the original chain test and the new regression both pass with the fix (2 passed, 0 failed, 0 skipped).

  • On the all-new-tests-excluded head 25ce72843c, build 388864 completed Native Tests in 169.3 seconds: 7,972 passed, 18 existing skipped cases, 0 failures, with a real Test Run Successful summary and vstest.console.exe exit code 0. Both certificate-chain cases explicitly passed.

  • The 7,990 normalized per-test outcomes exactly match the standalone fixture-fix build 388863 on main. The retained tests are therefore consistent with the control run. This supports an interaction involving the excluded tests or their linked code, but does not identify the specific C++ file.

  • Build 388864 is now terminal. Both product builds, Native Tests, and the Windows 11 / ARM64 UI jobs succeeded. The full pipeline is not green: Windows 10 UI tests finished 32 passed, 1 failed, with DesktopShortcutTracksFilePresenceAndLaunchesWorkspace reporting that the launched fixture window was not positioned as configured (log 212, lines 446-490).

  • That remaining UI failure is separate from the now-completed native-test execution; its underlying cause has not been determined. No assertions were weakened and no further automatic rerun was requested after this third diagnostic attempt. The original #50508 branch is unchanged.

  • Signature-only split: rebuilt x64 Release and ran the entire Workspaces native DLL locally: 103 passed, 0 failed, 0 skipped. CI 388868 fully succeeded, including all UI jobs; Native Tests completed in 186.2 seconds, 8,025 passed / 18 existing skipped, with vstest.console.exe exit code 0. This file alone did not reproduce the stall.

  • Current complementary async/IPC split: 79 passed, 0 failed, 0 skipped locally (50 original + 29 restored). CI is pending.

Comments Threads Pending Resolution

Resolved Comment Threads

No resolved comments have been left on this PR.