[PATCH 1 of 3] update: tests for branching
Stuart W Marks
smarks at smarks.org
Thu Aug 20 00:57:44 CDT 2009
# HG changeset patch
# User Stuart W Marks <smarks at smarks.org>
# Date 1250742632 25200
# Node ID e0811a5c19f8c4788b997d6ebb0f0dc66f8d0436
# Parent 9ff178e7b627b7a52e2c0593306fddd043f0ef00
update: tests for branching
Add test-update-branches to cover cases of 'hg update': to ancestor/
descendant, crossing named branches, crossing branches within a named
branch; with no option, -c or -C; with or without uncommitted changes;
with or without a specific revision. Test only, no behavior change.
diff -r 9ff178e7b627 -r e0811a5c19f8 tests/test-update-branches
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-update-branches Wed Aug 19 21:30:32 2009 -0700
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+hg init
+echo foo > foo
+echo zero > a
+hg ci -qAm0
+echo one > a ; hg ci -m1
+echo two > a ; hg ci -m2
+hg up -q 1
+echo three > a ; hg ci -qm3
+hg up -q 0
+hg branch -q b1
+echo four > a ; hg ci -qm4
+echo five > a ; hg ci -qm5
+
+echo % initial repo state
+echo
+hg --config 'extensions.graphlog=' \
+ glog --template '{rev}:{node|short} {parents} {branches}\n'
+
+# @ 5:e1bb631146ca b1
+# |
+# o 4:a4fdb3b883c4 0:b608b9236435 b1
+# |
+# | o 3:4b57d2520816 1:44592833ba9f
+# | |
+# | | o 2:063f31070f65
+# | |/
+# | o 1:44592833ba9f
+# |/
+# o 0:b608b9236435
+#
+# Expected results for "hg update REV"
+#
+# opts state linear same branch diff branch
+#
+# none clean OK abort(1) OK
+# none dirty merge abort(2) abort(3)
+#
+# -c clean OK OK OK
+# -c dirty abort(4) abort(4) abort(4)
+#
+# -C clean OK OK OK
+# -C dirty discard discard discard
+#
+# abort(1) = abort: crosses branches (use 'hg merge' or 'hg update -C')
+# abort(2) = abort: crosses branches (use 'hg merge' or 'hg update -C'
+# to discard changes)
+# abort(3) = abort: crosses named branches (use 'hg update -C' to
+# discard changes)
+# abort(4) = abort: uncommitted local changes
+#
+# "linear" = update to an ancestor or descendant
+# "same branch" = crossing to branch with same name
+# "diff branch" = crossing to a branch with a different name
+
+function revtest { # msg {clean|dirty} start-rev target-rev [update-opts]
+ echo % revtest $1
+ hg up -qC $3
+ test $2 = dirty && echo dirty > foo
+ hg up $5 $4
+ hg parent --template 'parent={rev}\n'
+ hg stat
+}
+
+revtest 'none clean linear' clean 1 2
+revtest 'none clean same' clean 2 3
+revtest 'none clean diff' clean 3 4
+revtest 'none dirty linear' dirty 1 2
+revtest 'none dirty same' dirty 2 3
+revtest 'none dirty diff' dirty 3 4
+
+revtest '-c clean linear' clean 1 2 -c
+revtest '-c clean same' clean 2 3 -c
+revtest '-c clean diff' clean 3 4 -c
+revtest '-c dirty linear' dirty 1 2 -c
+revtest '-c dirty same' dirty 2 3 -c
+revtest '-c dirty diff' dirty 3 4 -c
+
+revtest '-C clean linear' clean 1 2 -C
+revtest '-C clean same' clean 2 3 -C
+revtest '-C clean diff' clean 3 4 -C
+revtest '-C dirty linear' dirty 1 2 -C
+revtest '-C dirty same' dirty 2 3 -C
+revtest '-C dirty diff' dirty 3 4 -C
+
+# Expected results for "hg update"
+#
+# opts state linear cross branch
+#
+# none clean OK abort(1)
+# none dirty merge abort(2)
+#
+# -c clean OK OK
+# -c dirty abort(4) abort(4)
+#
+# -C clean OK OK
+# -C dirty discard discard
+
+function norevtest { # msg {clean|dirty} start-rev [update-opts]
+ echo % norevtest $1
+ hg up -qC $3
+ test $2 = dirty && echo dirty > foo
+ hg up $4
+ hg parent --template 'parent={rev}\n'
+ hg stat
+}
+
+norevtest 'none clean linear' clean 4
+norevtest 'none clean cross' clean 2
+norevtest 'none dirty linear' dirty 4
+norevtest 'none dirty cross' dirty 2
+
+norevtest '-c clean linear' clean 4 -c
+norevtest '-c clean cross' clean 2 -c
+norevtest '-c dirty linear' dirty 4 -c
+norevtest '-c dirty cross' dirty 2 -c
+
+norevtest '-C clean linear' clean 4 -C
+norevtest '-C clean cross' clean 2 -C
+norevtest '-C dirty linear' dirty 4 -C
+norevtest '-C dirty cross' dirty 2 -C
diff -r 9ff178e7b627 -r e0811a5c19f8 tests/test-update-branches.out
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-update-branches.out Wed Aug 19 21:30:32 2009 -0700
@@ -0,0 +1,114 @@
+% initial repo state
+
+@ 5:e1bb631146ca b1
+|
+o 4:a4fdb3b883c4 0:b608b9236435 b1
+|
+| o 3:4b57d2520816 1:44592833ba9f
+| |
+| | o 2:063f31070f65
+| |/
+| o 1:44592833ba9f
+|/
+o 0:b608b9236435
+
+% revtest none clean linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=2
+% revtest none clean same
+abort: crosses branches (use 'hg merge' or 'hg update -C')
+parent=2
+% revtest none clean diff
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=4
+% revtest none dirty linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=2
+M foo
+% revtest none dirty same
+abort: crosses branches (use 'hg merge' or 'hg update -C' to discard changes)
+parent=2
+M foo
+% revtest none dirty diff
+abort: crosses named branches (use 'hg update -C' to discard changes)
+parent=3
+M foo
+% revtest -c clean linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=2
+% revtest -c clean same
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=3
+% revtest -c clean diff
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=4
+% revtest -c dirty linear
+abort: uncommitted local changes
+parent=1
+M foo
+% revtest -c dirty same
+abort: uncommitted local changes
+parent=2
+M foo
+% revtest -c dirty diff
+abort: uncommitted local changes
+parent=3
+M foo
+% revtest -C clean linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=2
+% revtest -C clean same
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=3
+% revtest -C clean diff
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=4
+% revtest -C dirty linear
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=2
+% revtest -C dirty same
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=3
+% revtest -C dirty diff
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=4
+% norevtest none clean linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=5
+% norevtest none clean cross
+abort: crosses branches (use 'hg merge' or 'hg update -C')
+parent=2
+% norevtest none dirty linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=5
+M foo
+% norevtest none dirty cross
+abort: crosses branches (use 'hg merge' or 'hg update -C' to discard changes)
+parent=2
+M foo
+% norevtest -c clean linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=5
+% norevtest -c clean cross
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=3
+% norevtest -c dirty linear
+abort: uncommitted local changes
+parent=4
+M foo
+% norevtest -c dirty cross
+abort: uncommitted local changes
+parent=2
+M foo
+% norevtest -C clean linear
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=5
+% norevtest -C clean cross
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=3
+% norevtest -C dirty linear
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=5
+% norevtest -C dirty cross
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+parent=3
More information about the Mercurial-devel
mailing list