Skip to content

test(skills): cover Windows catalog - #3964

Merged
Astro-Han merged 1 commit into
apache:mainfrom
orangeCatDeveloper:fix/3901-windows-skill-catalog
Aug 27, 2026
Merged

Astro-Han merged 1 commit into
apache:mainfrom
orangeCatDeveloper:fix/3901-windows-skill-catalog

Conversation

@orangeCatDeveloper

@orangeCatDeveloper orangeCatDeveloper commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

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:

447:  if (process.platform === 'win32') return;
466:  if (process.platform === 'win32') return;
216:  if (process.platform === 'win32') return;
540:  if (process.platform === 'win32') return;
625:  if (process.platform === 'win32') return;
44:  skip: process.platform === 'win32',

After (Windows recovery run):

# tests 90
# suites 1
# pass 90
# fail 0
# cancelled 0
# skipped 0
# todo 0

AI use

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

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

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@orangeCatDeveloper
orangeCatDeveloper force-pushed the fix/3901-windows-skill-catalog branch from 66af60f to 22d5737 Compare August 27, 2026 03:04
@github-actions github-actions Bot added the effort/S Under 100 readable lines label Aug 27, 2026
@orangeCatDeveloper
orangeCatDeveloper force-pushed the fix/3901-windows-skill-catalog branch 2 times, most recently from 92e741b to d7ca3a7 Compare August 27, 2026 03:10
@orangeCatDeveloper
orangeCatDeveloper force-pushed the fix/3901-windows-skill-catalog branch from d7ca3a7 to 215cc71 Compare August 27, 2026 03:12
@orangeCatDeveloper
orangeCatDeveloper marked this pull request as ready for review August 27, 2026 03:22
@github-actions github-actions Bot added effort/M Under 500 readable lines and removed effort/S Under 100 readable lines labels Aug 27, 2026

@Astro-Han Astro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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:323 trades 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.mjs asserts # 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.

@Astro-Han
Astro-Han merged commit 5457886 into apache:main Aug 27, 2026
3 checks passed
@orangeCatDeveloper
orangeCatDeveloper deleted the fix/3901-windows-skill-catalog branch August 27, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/M Under 500 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test(eval): resolve Windows test skips in skill catalog

2 participants