summaryrefslogtreecommitdiff
path: root/tests/test-pull-pull-corruption.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-pull-pull-corruption.t')
-rw-r--r--tests/test-pull-pull-corruption.t72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/test-pull-pull-corruption.t b/tests/test-pull-pull-corruption.t
new file mode 100644
index 0000000..4df2984
--- /dev/null
+++ b/tests/test-pull-pull-corruption.t
@@ -0,0 +1,72 @@
+Corrupt an hg repo with two pulls.
+create one repo with a long history
+
+ $ hg init source1
+ $ cd source1
+ $ touch foo
+ $ hg add foo
+ $ for i in 1 2 3 4 5 6 7 8 9 10; do
+ > echo $i >> foo
+ > hg ci -m $i
+ > done
+ $ cd ..
+
+create one repo with a shorter history
+
+ $ hg clone -r 0 source1 source2
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd source2
+ $ echo a >> foo
+ $ hg ci -m a
+ $ cd ..
+
+create a third repo to pull both other repos into it
+
+ $ hg init corrupted
+ $ cd corrupted
+
+use a hook to make the second pull start while the first one is still running
+
+ $ echo '[hooks]' >> .hg/hgrc
+ $ echo 'prechangegroup = sleep 5' >> .hg/hgrc
+
+start a pull...
+
+ $ hg pull ../source1 > pull.out 2>&1 &
+
+... and start another pull before the first one has finished
+
+ $ sleep 1
+ $ hg pull ../source2 2>/dev/null
+ pulling from ../source2
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files (+1 heads)
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+ $ cat pull.out
+ pulling from ../source1
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 10 changesets with 10 changes to 1 files
+ (run 'hg update' to get a working copy)
+
+see the result
+
+ $ wait
+ $ hg verify
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ 1 files, 11 changesets, 11 total revisions
+
+ $ cd ..