Mercurial > hg
diff tests/test-status-eacces.t @ 50293:f1f3a8eb93a1 stable
tests: demonstrate a bug in dirstate-v2 handling of errors
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Fri, 10 Mar 2023 18:20:50 +0000 |
parents | |
children | bae51b50a5cf |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-status-eacces.t Fri Mar 10 18:20:50 2023 +0000 @@ -0,0 +1,51 @@ +#testcases dirstate-v1 dirstate-v2 + +#if dirstate-v2 + $ cat >> $HGRCPATH << EOF + > [format] + > use-dirstate-v2=1 + > [storage] + > dirstate-v2.slow-path=allow + > EOF +#endif + +The proliferation of status implementations can be confusing: +- The pure python implementation: +(no-rhg pure !) +- The C implementation: +(no-rhg no-rust no-pure !) +- The two rust implementations: +(rhg !) +(no-rhg rust !) + + $ hg init repo1 + $ cd repo1 + $ mkdir d1 + $ touch d1/x + $ hg commit -Am. + adding d1/x + $ touch d1/y + $ chmod -r d1 + $ hg status + d1: $EACCES$ + ! d1/x (rhg !) + ! d1/x (no-rhg rust !) + $ hg status + d1: $EACCES$ (rhg dirstate-v1 !) + d1: $EACCES$ (no-rhg rust dirstate-v1 !) + d1: $EACCES$ (no-rust no-rhg !) + ! d1/x (rust dirstate-v1 !) + ! d1/x (no-rust rhg dirstate-v1 !) + $ chmod +r d1 + $ hg status + ? d1/y (rhg dirstate-v1 !) + ? d1/y (no-rhg rust dirstate-v1 !) + ? d1/y (no-rhg no-rust !) + +TODO: make the tests marked with (dirstate-v1) above work the same way +with dirstate-v2 as well. + + $ touch d1/z + $ hg status + ? d1/y + ? d1/z