dirstate-v2: highlight a bug when Python-packed but used in `rhg` stable
authorRaphaël Gomès <rgomes@octobus.net>
Wed, 26 Oct 2022 18:24:34 +0200
branchstable
changeset 49548 e255a5355971
parent 49547 318bdd289cf2
child 49549 fc719967efd0
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.
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 ..