##// END OF EJS Templates
tests: make sure no ambiguities remains after the commit...
tests: make sure no ambiguities remains after the commit This will help to stabilize part of the test that are not relevant for what is actually tested. Differential Revision: https://phab.mercurial-scm.org/D11778

File last commit:

r49197:a4a5d123 default
r49197:a4a5d123 default
Show More
test-dirstate-race2.t
54 lines | 1.6 KiB | text/troff | Tads3Lexer
/ tests / test-dirstate-race2.t
Simon Sapin
dirstate: Remove the flat Rust DirstateMap implementation...
r48882 #testcases dirstate-v1 dirstate-v2
Simon Sapin
dirstate-tree: Add a dirstate-v1-tree variant of some tests...
r47900
Simon Sapin
dirstate-v2: Add a variant of some tests, that uses the new format...
r48056 #if dirstate-v2
dirstate-v2: add an option to prevent unintentional slow dirstate-v2...
r49049 $ cat >> $HGRCPATH << EOF
> [format]
dirstate-v2: freeze the on-disk format...
r49116 > exp-rc-dirstate-v2=1
dirstate-v2: add an option to prevent unintentional slow dirstate-v2...
r49049 > [storage]
> dirstate-v2.slow-path=allow
> EOF
Simon Sapin
dirstate-v2: Add a variant of some tests, that uses the new format...
r48056 #endif
Valentin Gatien-Baron
tests: show how the dirstate can end up containing wrong information...
r42654 Checking the size/permissions/file-type of files stored in the
dirstate after an update where the files are changed concurrently
outside of hg's control.
$ hg init repo
$ cd repo
$ echo a > a
$ hg commit -qAm _
$ echo aa > a
$ hg commit -m _
tests: make sure no ambiguities remains after the commit...
r49197 # this sleep is there to ensure current time has -at-least- one second away
# from the current time. It ensure the mtime is not ambiguous. If the test
# "sleep" longer this will be fine.
# It is not used to synchronise parallele operation so it is "fine" to use it.
$ sleep 1
$ hg status
Valentin Gatien-Baron
tests: show how the dirstate can end up containing wrong information...
r42654
$ hg debugdirstate --no-dates
n 644 3 (set |unset) a (re)
$ cat >> $TESTTMP/dirstaterace.py << EOF
> from mercurial import (
> extensions,
> merge,
> )
> def extsetup(ui):
> extensions.wrapfunction(merge, 'applyupdates', wrap)
> def wrap(orig, *args, **kwargs):
> res = orig(*args, **kwargs)
> with open("a", "w"):
> pass # just truncate the file
> return res
> EOF
Do an update where file 'a' is changed between hg writing it to disk
Valentin Gatien-Baron
merge: fix race that could cause wrong size in dirstate...
r42656 and hg writing the dirstate. The dirstate is correct nonetheless, and
so hg status correctly shows a as clean.
Valentin Gatien-Baron
tests: show how the dirstate can end up containing wrong information...
r42654
$ hg up -r 0 --config extensions.race=$TESTTMP/dirstaterace.py
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg debugdirstate --no-dates
Valentin Gatien-Baron
merge: fix race that could cause wrong size in dirstate...
r42656 n 644 2 (set |unset) a (re)
Valentin Gatien-Baron
tests: show how the dirstate can end up containing wrong information...
r42654 $ echo a > a; hg status; hg diff