Mercurial > hg
annotate tests/test-status-eacces.t @ 51274:bec6e9c108fd
matchers: use correct method for finding index in vector
The path matcher has an optimization for when all paths are `rootfilesin:`. This
optimization exists in both Python and Rust. However, the Rust implementation
currently has a bug that makes it fail in most cases. The bug is that it
`rfind()` where it was clearly intended to use `rposition()`. This patch fixes
that and adds a test.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 18 Dec 2023 14:51:20 -0800 |
parents | 86d2a28c018e |
children |
rev | line source |
---|---|
50293
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
1 #testcases dirstate-v1 dirstate-v2 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
2 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
3 #if dirstate-v2 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
4 $ cat >> $HGRCPATH << EOF |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
5 > [format] |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
6 > use-dirstate-v2=1 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
7 > [storage] |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
8 > dirstate-v2.slow-path=allow |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
9 > EOF |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
10 #endif |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
11 |
50294
bae51b50a5cf
dirstate-v2: fix an incorrect handling of readdir errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50293
diff
changeset
|
12 |
50293
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
13 The proliferation of status implementations can be confusing: |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
14 - The pure python implementation: |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
15 (no-rhg pure !) |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
16 - The C implementation: |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
17 (no-rhg no-rust no-pure !) |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
18 - The two rust implementations: |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
19 (rhg !) |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
20 (no-rhg rust !) |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
21 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
22 $ hg init repo1 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
23 $ cd repo1 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
24 $ mkdir d1 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
25 $ touch d1/x |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
26 $ hg commit -Am. |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
27 adding d1/x |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
28 $ touch d1/y |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
29 $ chmod -r d1 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
30 $ hg status |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
31 d1: $EACCES$ |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
32 ! d1/x (rhg !) |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
33 ! d1/x (no-rhg rust !) |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
34 $ hg status |
50295
86d2a28c018e
tests: simplify a bit
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50294
diff
changeset
|
35 d1: $EACCES$ |
50294
bae51b50a5cf
dirstate-v2: fix an incorrect handling of readdir errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50293
diff
changeset
|
36 ! d1/x (rust !) |
bae51b50a5cf
dirstate-v2: fix an incorrect handling of readdir errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50293
diff
changeset
|
37 ! d1/x (no-rust rhg !) |
50293
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
38 $ chmod +r d1 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
39 $ hg status |
50295
86d2a28c018e
tests: simplify a bit
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50294
diff
changeset
|
40 ? d1/y |
50293
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
41 |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
42 $ touch d1/z |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
43 $ hg status |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
44 ? d1/y |
f1f3a8eb93a1
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
45 ? d1/z |