Repository navigation
fix(test): inspect plan budgets and skipped targets without suggesting builds - #12
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
xcforge-web | 93918d8 | Oct 10 2026, 06:23 PM |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 93918d89e8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let decoded = try? JSONDecoder().decode(XCTestPlan.self, from: data) | ||
| else { return nil } | ||
| return decoded.testTargets.filter { $0.enabled != false }.map(\.target.name) | ||
| return decoded.testTargets.filter(\.isEnabled).map(\.target.name) |
There was a problem hiding this comment.
Preserve an exact empty target list
When every target in a test plan has skipped: true, this filter correctly produces an empty array, but ProjectResolver.testTargetNames only accepts plan-derived names when !names.isEmpty and otherwise falls back to the scheme or guessed targets. That fallback reintroduces the skipped targets, so static filter resolution still treats an all-skipped plan as active. The caller needs to distinguish a successfully decoded empty plan from lookup/decoding failure.
Useful? React with 👍 / 👎.
What
Test-plan inspection now reports timeout allowances, target ordering and the names of declared selections. It honors Xcode's
skipped: truetarget flag in both its summary and static target discovery, while retaining support for legacyenabled: false.Why
A cloud development loop needs reliable metadata checks without compiling the app. Previously an inspection of a plan with execution budgets reported “no options set”, skipped targets still appeared active, and the output recommended
test list, which can start a build. The inspector now identifies its static limits and warns that enumeration can compile.How
Extend the existing optional Codable fields and preserve the no-subprocess inspection path. Refresh the packaged skill guidance.
Testing