Found while reviewing #893.
What happens
The Windows daemon and file handles job in .github/workflows/ci.yml runs an explicit list of test files. tests/test_incremental.py is not in it, and neither is tests/test_watch_robustness.py.
That means the Windows-specific branches inside those files — junction handling, _winapi.CreateJunction, WindowsPath.__eq__ being case-insensitive where PosixPath.__eq__ is not, and the whole watch reconciliation path — never execute in CI on Windows. A contributor adding a sys.platform == "win32" branch there can only claim it works from a local run, and we have no way to check.
This is exactly the shape of #811's Windows report: the same failure arrived through a different backend, and we found out from a user rather than from CI.
Suggested fix
Add tests/test_incremental.py and tests/test_watch_robustness.py to the Windows job's list, and fix whatever that surfaces. If some tests genuinely cannot run there (symlink creation needs privilege on Windows), mark those individually with pytest.mark.skipif so the rest still runs, instead of excluding the whole file.
Found while reviewing #893.
What happens
The
Windows daemon and file handlesjob in.github/workflows/ci.ymlruns an explicit list of test files.tests/test_incremental.pyis not in it, and neither istests/test_watch_robustness.py.That means the Windows-specific branches inside those files — junction handling,
_winapi.CreateJunction,WindowsPath.__eq__being case-insensitive wherePosixPath.__eq__is not, and the whole watch reconciliation path — never execute in CI on Windows. A contributor adding asys.platform == "win32"branch there can only claim it works from a local run, and we have no way to check.This is exactly the shape of #811's Windows report: the same failure arrived through a different backend, and we found out from a user rather than from CI.
Suggested fix
Add
tests/test_incremental.pyandtests/test_watch_robustness.pyto the Windows job's list, and fix whatever that surfaces. If some tests genuinely cannot run there (symlink creation needs privilege on Windows), mark those individually withpytest.mark.skipifso the rest still runs, instead of excluding the whole file.