# HG changeset patch # User Durham Goode # Date 1409956616 25200 # Node ID 2e47e461d2ca40559c93cb5b0fd584330c110610 # Parent 6f63c47cbb861169d700830ad70cf7297fdb46fb 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. diff -r 6f63c47cbb86 -r 2e47e461d2ca tests/test-dirstate.t --- 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 < 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