ci: run the test suite on Windows in a parallel windows-test job - #125
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #124's observation that
cfg(windows)tests (and all other Windows-only behaviour) never executed on any CI runner:windows-checkcompiles only, and the LinuxTestjob cannot compile Windows-gated tests.windows-testjob runningcargo test --features fullonwindows-latest, matching the Linux gate's feature coverage.windows-checkis kept unchanged. It guards a compile-time bug class (dependency accidentally scoped to[target.'cfg(unix)'], which shipped broken in v0.17.0) that Linuxcargo checkcannot 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
cargo fmt --checkclean (no Rust changes).Windows testshould compile and run the suite, includingcodelist_root_rejects_backslash_traversal_and_drive_relative_paths.🤖 Generated with Claude Code