test-dirstate.t
108 lines
| 2.2 KiB
| text/troff
|
Tads3Lexer
/ tests / test-dirstate.t
|
r48056 | #testcases dirstate-v1 dirstate-v1-tree dirstate-v2 | ||
|
r47900 | |||
#if dirstate-v1-tree | ||||
#require rust | ||||
$ echo '[experimental]' >> $HGRCPATH | ||||
$ echo 'dirstate-tree.in-memory=1' >> $HGRCPATH | ||||
#endif | ||||
|
r48056 | #if dirstate-v2 | ||
#require rust | ||||
$ echo '[format]' >> $HGRCPATH | ||||
$ echo 'exp-dirstate-v2=1' >> $HGRCPATH | ||||
#endif | ||||
|
r11888 | ------ Test dirstate._dirs refcounting | ||
|
r11887 | |||
$ hg init t | ||||
$ cd t | ||||
$ mkdir -p a/b/c/d | ||||
$ touch a/b/c/d/x | ||||
$ touch a/b/c/d/y | ||||
$ touch a/b/c/d/z | ||||
$ hg ci -Am m | ||||
adding a/b/c/d/x | ||||
adding a/b/c/d/y | ||||
adding a/b/c/d/z | ||||
$ hg mv a z | ||||
|
r35394 | moving a/b/c/d/x to z/b/c/d/x | ||
moving a/b/c/d/y to z/b/c/d/y | ||||
moving a/b/c/d/z to z/b/c/d/z | ||||
|
r17095 | |||
Test name collisions | ||||
$ rm z/b/c/d/x | ||||
$ mkdir z/b/c/d/x | ||||
$ touch z/b/c/d/x/y | ||||
$ hg add z/b/c/d/x/y | ||||
abort: file 'z/b/c/d/x' in dirstate clashes with 'z/b/c/d/x/y' | ||||
[255] | ||||
$ rm -rf z/b/c/d | ||||
$ touch z/b/c/d | ||||
$ hg add z/b/c/d | ||||
abort: directory 'z/b/c/d' already in dirstate | ||||
[255] | ||||
|
r11888 | $ cd .. | ||
|
r11887 | |||
|
r12399 | Issue1790: dirstate entry locked into unset if file mtime is set into | ||
the future | ||||
|
r11888 | |||
Prepare test repo: | ||||
$ hg init u | ||||
$ cd u | ||||
$ echo a > a | ||||
$ hg add | ||||
adding a | ||||
$ hg ci -m1 | ||||
Set mtime of a into the future: | ||||
$ touch -t 202101011200 a | ||||
Status must not set a's entry to unset (issue1790): | ||||
$ hg status | ||||
$ hg debugstate | ||||
n 644 2 2021-01-01 12:00:00 a | ||||
|
r17733 | |||
Test modulo storage/comparison of absurd dates: | ||||
|
r11888 | |||
|
r19092 | #if no-aix | ||
|
r17733 | $ touch -t 195001011200 a | ||
$ hg st | ||||
$ hg debugstate | ||||
n 644 2 2018-01-19 15:14:08 a | ||||
|
r19092 | #endif | ||
|
r22406 | |||
Verify that exceptions during a dirstate change leave the dirstate | ||||
coherent (issue4353) | ||||
$ cat > ../dirstateexception.py <<EOF | ||||
|
r33956 | > from __future__ import absolute_import | ||
> from mercurial import ( | ||||
> error, | ||||
> extensions, | ||||
|
r45383 | > mergestate as mergestatemod, | ||
|
r33956 | > ) | ||
|
r22406 | > | ||
|
r42656 | > def wraprecordupdates(*args): | ||
|
r46273 | > raise error.Abort(b"simulated error while recording dirstateupdates") | ||
|
r22406 | > | ||
> def reposetup(ui, repo): | ||||
|
r45383 | > extensions.wrapfunction(mergestatemod, 'recordupdates', | ||
> wraprecordupdates) | ||||
|
r22406 | > EOF | ||
$ hg rm a | ||||
$ hg commit -m 'rm a' | ||||
$ echo "[extensions]" >> .hg/hgrc | ||||
$ echo "dirstateex=../dirstateexception.py" >> .hg/hgrc | ||||
$ hg up 0 | ||||
abort: simulated error while recording dirstateupdates | ||||
[255] | ||||
$ hg log -r . -T '{rev}\n' | ||||
1 | ||||
$ hg status | ||||
? a | ||||