Skip to content

fix(test): inspect plan budgets and skipped targets without suggesting builds - #12

Merged
justinthevoid merged 2 commits into
mainfrom
fix/test-plan-metadata-safety
Oct 10, 2026
Merged

justinthevoid merged 2 commits into
mainfrom
fix/test-plan-metadata-safety

Conversation

@justinthevoid

@justinthevoid justinthevoid commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

What

Test-plan inspection now reports timeout allowances, target ordering and the names of declared selections. It honors Xcode's skipped: true target flag in both its summary and static target discovery, while retaining support for legacy enabled: 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

  • Strict swift-format lint on changed Swift files; git diff whitespace checks.
  • Added fixtures for Xcode skipped targets, legacy disabled targets, timeout settings, ordering and string selections.
  • Skill references and embedded copy updated together.
  • GitHub CI passed: all 741 Swift tests, debug and release builds, strict lint and web build. Run 38072521623. No local compilation was run.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
xcforge-web 93918d8 Oct 10 2026, 06:23 PM

@justinthevoid
justinthevoid marked this pull request as ready for review October 10, 2026 18:22
Copilot AI balanced review requested due to automatic review settings October 10, 2026 18:22

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T18:24:58.948181Z 93918d8 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@justinthevoid
justinthevoid merged commit 9c68ea5 into main Oct 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants