[PATCH 3 of 4 V3] dirstate: add test for exceptions during updates
Durham Goode
durham at fb.com
Tue Sep 9 15:21:29 CDT 2014
# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1409956616 25200
# Fri Sep 05 15:36:56 2014 -0700
# Node ID af3352972f8fddfb0c5b755e6ceb2470a31e6f7c
# Parent cdaf572d1e310705db09ff06d6900c4d59d060b4
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 --git a/tests/test-dirstate.t b/tests/test-dirstate.t
--- a/tests/test-dirstate.t
+++ b/tests/test-dirstate.t
@@ -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
More information about the Mercurial-devel
mailing list