Mercurial > hg
changeset 22406:2e47e461d2ca
dirstate: add test for exceptions during updates
Adds a test that checks if the working copy parent and the working copy are in a
good state if an exception happens between the time the working copy parent is
set and the time the actual updates are recorded in the dirstate.
author | Durham Goode <durham@fb.com> |
---|---|
date | Fri, 05 Sep 2014 15:36:56 -0700 |
parents | 6f63c47cbb86 |
children | d259322a394b |
files | tests/test-dirstate.t |
diffstat | 1 files changed, 25 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-dirstate.t Fri Sep 05 11:36:20 2014 -0700 +++ b/tests/test-dirstate.t Fri Sep 05 15:36:56 2014 -0700 @@ -61,3 +61,28 @@ $ hg debugstate n 644 2 2018-01-19 15:14:08 a #endif + +Verify that exceptions during a dirstate change leave the dirstate +coherent (issue4353) + + $ cat > ../dirstateexception.py <<EOF + > from mercurial import merge, extensions, util + > + > def wraprecordupdates(orig, repo, actions, branchmerge): + > raise util.Abort("simulated error while recording dirstateupdates") + > + > def reposetup(ui, repo): + > extensions.wrapfunction(merge, 'recordupdates', wraprecordupdates) + > 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