[PATCH 1 of 2 STABLE] merge: add new test script for error conditions and messages

Greg Ward greg-hg at gerg.ca
Sun May 2 09:48:51 CDT 2010


# HG changeset patch
# User Greg Ward <greg-hg at gerg.ca>
# Date 1272809256 14400
# Branch stable
# Node ID b344ddac6247c92150da4187b3365ab2f2442abd
# Parent  b8d0b4721affa90241f304272e0836ba566d0b3a
merge: add new test script for error conditions and messages.

diff --git a/tests/test-merge-errors b/tests/test-merge-errors
new file mode 100755
--- /dev/null
+++ b/tests/test-merge-errors
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Test various cases where merge refuses to merge.  This is mainly to
+# test the error messages, although it has the useful side effect of
+# testing the error detection too.
+
+hgmerge() {
+    echo hg merge "$@"
+    hg merge "$@"
+    echo "status=$?"
+}
+
+echo "% setup"
+# create a little repo with 3 revs and 2 heads
+hg init t
+cd t
+touch a
+hg commit -A -m0
+touch b
+hg commit -A -m1
+hg update -q 0
+touch c
+hg commit -A -m2
+
+echo ""
+echo "% refuse to merge with ancestor of current changeset"
+hgmerge 0
+
+echo ""
+echo "% refuse to merge with self"
+hgmerge 2
+
+echo ""
+echo "% refuse to merge with descendant"
+hg update -q 0
+hgmerge 1
+
+echo ""
+echo "% create named branch with only one head"
+hg update -q 1
+hg branch foo
+hg commit -m"3: create branch foo"
+
+echo ""
+echo "% refuse to merge when only one branch head"
+hgmerge
+
+echo ""
+echo "% turn branch foo into a 3-head monster"
+touch d
+hg commit -A -m4
+hg update -q 3
+touch e
+hg commit -A -m5
+hg update -q 3
+touch f
+hg commit -A -m6
+#hg heads foo
+
+echo ""
+echo "% refuse to merge when > 2 heads"
+hgmerge
diff --git a/tests/test-merge-errors.out b/tests/test-merge-errors.out
new file mode 100644
--- /dev/null
+++ b/tests/test-merge-errors.out
@@ -0,0 +1,42 @@
+% setup
+adding a
+adding b
+adding c
+created new head
+
+% refuse to merge with ancestor of current changeset
+hg merge 0
+abort: can't merge with ancestor
+status=255
+
+% refuse to merge with self
+hg merge 2
+abort: can't merge with ancestor
+status=255
+
+% refuse to merge with descendant
+hg merge 1
+abort: nothing to merge (use 'hg update' or check 'hg heads')
+status=255
+
+% create named branch with only one head
+marked working directory as branch foo
+
+% refuse to merge when only one branch head
+hg merge
+abort: branch 'foo' has one head - please merge with an explicit rev
+(run 'hg heads' to see all heads)
+status=0
+
+% turn branch foo into a 3-head monster
+adding d
+adding e
+created new head
+adding f
+created new head
+
+% refuse to merge when > 2 heads
+hg merge
+abort: branch 'foo' has 3 heads - please merge with an explicit rev
+(run 'hg heads .' to see heads)
+status=0


More information about the Mercurial-devel mailing list