# HG changeset patch # User Rapha?l Gom?s # Date 1666801474 -7200 # Node ID e255a5355971b18c24911aa5aaa74075ee084e09 # Parent 318bdd289cf266901405d4ee8eb3caa1437947ec dirstate-v2: highlight a bug when Python-packed but used in `rhg` The Python packer creates unsorted entries in the edge case that a file starts with the same name as a sibling folder. This bug has no effect on the Python `hg status` since Python ignores directories. `rhg` assumes that all on-disk entries are sorted (which is a property of the format) including folder, hence the issue highlighted. This is also technically broken in Rust-augmented `hg status`, but it makes setting up the test more complex than necessary, since it requires the packing to be Python only (which it isn't if you have Rust extensions). Fix is in the next commit. diff -r 318bdd289cf2 -r e255a5355971 tests/test-dirstate.t --- a/tests/test-dirstate.t Wed Oct 26 12:20:23 2022 +0200 +++ b/tests/test-dirstate.t Wed Oct 26 18:24:34 2022 +0200 @@ -245,3 +245,27 @@ $ hg status A foo + $ cd .. + +Check dirstate ordering +(e.g. `src/dirstate/` and `src/dirstate.rs` shouldn't cause issues) + + $ hg init repro + $ cd repro + $ mkdir src + $ mkdir src/dirstate + $ touch src/dirstate/file1 src/dirstate/file2 src/dirstate.rs + $ touch file1 file2 + $ hg commit -Aqm1 +#if rhg no-rust dirstate-v2 + $ hg st + ! src/dirstate/file1 (known-bad-output !) + ! src/dirstate/file2 (known-bad-output !) + ? src/dirstate/file1 (known-bad-output !) + ? src/dirstate/file2 (known-bad-output !) + expected a value, found none (known-bad-output !) + [255] +#else + $ hg st +#endif + $ cd ..