Skip to content

ci: run the test suite on Windows in a parallel windows-test job - #125

Merged
pacharanero merged 2 commits into
mainfrom
ci/windows-test-job
Sep 3, 2026
Merged

ci: run the test suite on Windows in a parallel windows-test job#125
pacharanero merged 2 commits into
mainfrom
ci/windows-test-job

Conversation

@pacharanero

Copy link
Copy Markdown
Owner

Summary

Follow-up to #124's observation that cfg(windows) tests (and all other Windows-only behaviour) never executed on any CI runner: windows-check compiles only, and the Linux Test job cannot compile Windows-gated tests.

  • Adds a parallel windows-test job running cargo test --features full on windows-latest, matching the Linux gate's feature coverage.
  • Deliberately parallel, not chained: a merge need not wait on Windows tests when the Linux gate is green; the Windows job is advisory until/unless added to required checks (branch protection is currently off).
  • windows-check is kept unchanged. It guards a compile-time bug class (dependency accidentally scoped to [target.'cfg(unix)'], which shipped broken in v0.17.0) that Linux cargo check cannot catch - so the two Windows jobs serve different purposes: compile gate vs test execution.
  • spec/roadmap.md: updated the 2026-09-03 cleared entry, which said these tests run on no CI runner.

Test plan

  • YAML parses; REUSE lint clean; cargo fmt --check clean (no Rust changes).
  • This PR's own CI run exercises the new job end-to-end: Windows test should compile and run the suite, including codelist_root_rejects_backslash_traversal_and_drive_relative_paths.

🤖 Generated with Claude Code

Windows-only behaviour (path separators, cfg(windows) tests such as the
CodelistRoot traversal regression tests added in #124) never executed on
CI: the Linux Test job cannot compile them, and windows-check compiles
only without running test binaries. A dedicated parallel job now runs
cargo test --features full on Windows.

Deliberately parallel rather than chained: a merge need not wait on
Windows tests when the Linux gate is green, and this job can fail without
blocking the merge gate the Linux tests define. windows-check stays as
the release-graph compile gate (the v0.17.0 cfg(unix) dependency-scoping
break is a compile-time signal, not a test-time one).
The new windows-test job caught two real portability defects on its first
run (357 passed, 2 failed):

- roundtrip_parse_write_parse held a NamedTempFile handle open while
  write_codelist atomically replaced the same path; persist() over an
  open handle is 'access denied' on Windows. Use a temp directory path
  with no open handle instead.
- codelist_root_allows_nested_new_files_only_with_expected_extension
  asserted a forward-slash display string; Path::display() renders
  native separators, so build the expected value from components.

Production code unchanged in both cases - the failures were test
portability, not product bugs.
@pacharanero
pacharanero merged commit f00f9f3 into main Sep 3, 2026
15 checks passed
@pacharanero
pacharanero deleted the ci/windows-test-job branch September 3, 2026 15:46
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.

1 participant