Repository navigation
test(skills): cover Windows catalog - #3964
Conversation
66af60f to
22d5737
Compare
92e741b to
d7ca3a7
Compare
d7ca3a7 to
215cc71
Compare
Astro-Han
left a comment
There was a problem hiding this comment.
Approve — the Windows adaptations are real execution, not a different way of skipping. I verified each: icacls /deny genuinely denies read (the rejects assertions are unchanged), the SIGKILL case only swaps the process-termination representation while keeping the transaction-directory and recovery assertions intact, the open-fd case is honestly renamed to "stale save" and still asserts commit_outcome_unknown plus the frozen content, and the two-client test now exercises the named-pipe transport with an isolated skill home.
Two suggestions, neither blocking:
- The fixture change at
skill-catalog-repository.test.ts:323trades coverage rather than gaining it, and the body does not mention it. The id went from a newline (bad\nskill) to DEL (bad\u007Fskill) because Windows forbids 0x00-0x1F in filenames while DEL is allowed. But this test is named "noncanonical external ids remain wire-safe governance entries", and a newline is precisely the character wire-safety cares about - it can split or inject lines in a line-oriented representation, which DEL cannot. POSIX previously covered the dangerous character and now covers a harmless one. Keeping both would be strictly better: the newline case gated to non-Windows, plus the DEL case everywhere. ci-test-plan.test.mjsasserts# tests 90/# pass 90, duplicating a number the workflow already hardcodes. The real guard is the workflow's own PowerShell check, so the meta-test copy adds no independent protection while making a legitimate new test require two edits. The adjacent "root initialization replacement race" test asserts only# skipped 0, which is the better precedent.
AI-assisted review disclosure: Claude Code compared the before/after skip sites and the CI contract; I verified the ACL mechanism, the retained assertions, and the fixture-character trade against current main myself.
Fixes #3901
Summary
Windows could report a healthy Skill Catalog suite while six filesystem, recovery, and multi-client contracts never ran.
Five tests returned before their assertions on Windows, while the real two-client transport test carried an explicit Windows skip. The tests now use Windows ACLs for unreadable fixtures, accept the Windows process-termination representation, exercise the existing named-pipe transport with an isolated skill home, and retain the open-handle and symlink recovery assertions.
The blocking Windows recovery lane runs every Skill Catalog test file and requires exactly 90 passes with zero skips; its CI contract prevents the file list or count from silently shrinking.
Verification
Before:
After (Windows recovery run):
AI use
Tool(s) and scope: Codex implemented the cross-platform test fixtures and Windows CI gate, then performed local validation and an independent subagent review.
Checklist
Does this PR entail a change in behavior?