tests/test-status-eacces.t
author Arseniy Alekseyev <aalekseyev@janestreet.com>
Mon, 13 Mar 2023 14:15:34 +0000
branchstable
changeset 50322 bae51b50a5cf
parent 50321 f1f3a8eb93a1
child 50323 86d2a28c018e
permissions -rw-r--r--
dirstate-v2: fix an incorrect handling of readdir errors Make sure not to cache the results of a failed readdir call.

#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 !)
  d1: $EACCES$ (no-rhg rust !)
  d1: $EACCES$ (no-rust no-rhg !)
  ! d1/x (rust !)
  ! d1/x (no-rust rhg !)
  $ chmod +r d1
  $ hg status
  ? d1/y (rhg !)
  ? d1/y (no-rhg rust !)
  ? d1/y (no-rhg no-rust !)

  $ touch d1/z
  $ hg status
  ? d1/y
  ? d1/z