tests/test-clone-pull-corruption.t
changeset 12412 2dbb9e5e3454
parent 1785 81ca1a9bd061
child 15445 7cbb81c47025
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-clone-pull-corruption.t	Sun Sep 26 13:41:32 2010 -0500
@@ -0,0 +1,50 @@
+Corrupt an hg repo with a pull started during an aborted commit
+Create two repos, so that one of them can pull from the other one.
+
+  $ hg init source
+  $ cd source
+  $ touch foo
+  $ hg add foo
+  $ hg ci -m 'add foo'
+  $ hg clone . ../corrupted
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo >> foo
+  $ hg ci -m 'change foo'
+
+Add a hook to wait 5 seconds and then abort the commit
+
+  $ cd ../corrupted
+  $ echo '[hooks]' >> .hg/hgrc
+  $ echo 'pretxncommit = sleep 5; exit 1' >> .hg/hgrc
+
+start a commit...
+
+  $ touch bar
+  $ hg add bar
+  $ hg ci -m 'add bar' &
+
+... and start a pull while the commit is still running
+
+  $ sleep 1
+  $ hg pull ../source 2>/dev/null
+  pulling from ../source
+  transaction abort!
+  rollback completed
+  abort: pretxncommit hook exited with status 1
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  (run 'hg update' to get a working copy)
+
+see what happened
+
+  $ wait
+  $ hg verify
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+  1 files, 2 changesets, 2 total revisions