-
Notifications
You must be signed in to change notification settings - Fork 1
Swift Testing migration policy: use XCTest interop, port KeyPathTestCase guards to a trait #918
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requestkeypathScope: KeyPath product, app, installer, or repository workScope: KeyPath product, app, installer, or repository workneeds-decisionRequires a product or scope decision before implementationRequires a product or scope decision before implementationon-holdValid work intentionally deferred pending evidence, dependency, or product decisionValid work intentionally deferred pending evidence, dependency, or product decisionpost-releasePost-public-1.0 work; not required before stable 1.0 releasePost-public-1.0 work; not required before stable 1.0 releasetestingTest coverage and test infrastructureTest coverage and test infrastructurewwdc26
Description
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestkeypathScope: KeyPath product, app, installer, or repository workScope: KeyPath product, app, installer, or repository workneeds-decisionRequires a product or scope decision before implementationRequires a product or scope decision before implementationon-holdValid work intentionally deferred pending evidence, dependency, or product decisionValid work intentionally deferred pending evidence, dependency, or product decisionpost-releasePost-public-1.0 work; not required before stable 1.0 releasePost-public-1.0 work; not required before stable 1.0 releasetestingTest coverage and test infrastructureTest coverage and test infrastructurewwdc26
Post-1.0. Not for the 1.0 launch. From the WWDC 2026 review — see
docs/wwdc-2026-macos-27-opportunities.md(PR #911), opportunity #7.Why
The codebase is ~294 XCTest files vs ~48 Swift Testing files. WWDC26 shipped Swift Testing ↔ XCTest interoperability (call either framework's APIs from a test body in the other), which removes the main migration blocker: shared safety helpers like
KeyPathTestCase(the no-real-pgrepdeadlock guard) couldn't straddle frameworks safely.Plan — change the policy, not the codebase
This is explicitly not a 294-file migration project:
KeyPathTestCasesafety guards (pgrep deadlock prevention, fast-test rules) to a Swift Testing trait/fixture.@Testcases for layout/keymap matrices (good fit forKeyPathLayoutTracerTests-style suites).Requires the Xcode 27 toolchain (see toolchain upgrade issue).
https://claude.ai/code/session_01Nsiqm39oCwHkbrHytefnGM