tests/test-bheads.t
changeset 12072 010025717202
parent 11543 0a2762d83c53
child 12316 4134686b83e1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-bheads.t	Fri Aug 27 00:27:40 2010 +0200
@@ -0,0 +1,377 @@
+  $ heads()
+  > {
+  >    hg heads --template '{rev}: {desc|firstline|strip} ({branches})\n' "$@"
+  > }
+
+  $ hg init a
+  $ cd a
+  $ echo 'root' >root
+  $ hg add root
+  $ hg commit -m "Adding root node"
+  $ heads
+  0: Adding root node ()
+-------
+  $ heads .
+  0: Adding root node ()
+
+=======
+
+  $ echo 'a' >a
+  $ hg add a
+  $ hg branch a
+  marked working directory as branch a
+  $ hg commit -m "Adding a branch"
+  $ heads
+  1: Adding a branch (a)
+  0: Adding root node ()
+-------
+  $ heads .
+  1: Adding a branch (a)
+
+=======
+
+  $ hg update -C 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo 'b' >b
+  $ hg add b
+  $ hg branch b
+  marked working directory as branch b
+  $ hg commit -m "Adding b branch"
+  $ heads
+  2: Adding b branch (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+-------
+  $ heads .
+  2: Adding b branch (b)
+
+=======
+
+  $ echo 'bh1' >bh1
+  $ hg add bh1
+  $ hg commit -m "Adding b branch head 1"
+  $ heads
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+-------
+  $ heads .
+  3: Adding b branch head 1 (b)
+
+=======
+
+  $ hg update -C 2
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo 'bh2' >bh2
+  $ hg add bh2
+  $ hg commit -m "Adding b branch head 2"
+  created new head
+  $ heads
+  4: Adding b branch head 2 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  $ heads .
+  4: Adding b branch head 2 (b)
+  3: Adding b branch head 1 (b)
+
+=======
+
+  $ hg update -C 2
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo 'bh3' >bh3
+  $ hg add bh3
+  $ hg commit -m "Adding b branch head 3"
+  created new head
+  $ heads
+  5: Adding b branch head 3 (b)
+  4: Adding b branch head 2 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+-------
+  $ heads .
+  5: Adding b branch head 3 (b)
+  4: Adding b branch head 2 (b)
+  3: Adding b branch head 1 (b)
+
+=======
+
+  $ hg merge 4
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg commit -m "Merging b branch head 2 and b branch head 3"
+  $ heads
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+-------
+  $ heads .
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+
+=======
+
+  $ echo 'c' >c
+  $ hg add c
+  $ hg branch c
+  marked working directory as branch c
+  $ hg commit -m "Adding c branch"
+  $ heads
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+-------
+  $ heads .
+  7: Adding c branch (c)
+
+=======
+
+  $ heads -r 3 .
+  no open branch heads found on branches c (started at 3)
+  $ echo $?
+  0
+  $ heads -r 2 .
+  7: Adding c branch (c)
+  $ echo $?
+  0
+-------
+  $ hg update -C 4
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo $?
+  0
+-------
+  $ heads -r 3 .
+  3: Adding b branch head 1 (b)
+  $ echo $?
+  0
+-------
+  $ heads -r 2 .
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  $ echo $?
+  0
+-------
+  $ heads -r 7 .
+  no open branch heads found on branches b (started at 7)
+  $ echo $?
+  0
+
+=======
+
+  $ for i in 0 1 2 3 4 5 6 7; do
+  >     hg update -C "$i"
+  >     heads
+  >     echo '-------'
+  >     heads .
+  >     echo '-------'
+  > done
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  0: Adding root node ()
+  -------
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  1: Adding a branch (a)
+  -------
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  -------
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  -------
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  -------
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  -------
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  -------
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+  -------
+  7: Adding c branch (c)
+  -------
+
+=======
+
+  $ for i in a b c z; do
+  >     heads "$i"
+  >     echo '-------'
+  > done
+  1: Adding a branch (a)
+  -------
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  -------
+  7: Adding c branch (c)
+  -------
+  abort: unknown revision 'z'!
+  -------
+
+=======
+
+  $ heads 0 1 2 3 4 5 6 7
+  7: Adding c branch (c)
+  6: Merging b branch head 2 and b branch head 3 (b)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+  0: Adding root node ()
+
+Topological heads:
+
+  $ heads -t
+  7: Adding c branch (c)
+  3: Adding b branch head 1 (b)
+  1: Adding a branch (a)
+
+  $ cd ..
+______________
+
+"created new head" message tests
+
+  $ hg init newheadmsg
+  $ cd newheadmsg
+
+Init: no msg
+
+  $ echo 1 > a
+  $ hg ci -Am "a0: Initial root"
+  adding a
+  $ echo 2 >> a
+  $ hg ci -m "a1 (HN)"
+
+  $ hg branch b
+  marked working directory as branch b
+  $ echo 1 > b
+  $ hg ci -Am "b2: Initial root for branch b"
+  adding b
+  $ echo 2 >> b
+  $ hg ci -m "b3 (HN)"
+
+Case NN: msg
+
+  $ hg up -q null
+  $ hg branch -f b
+  marked working directory as branch b
+  $ echo 1 > bb
+  $ hg ci -Am "b4 (NN): new topo root for branch b"
+  adding bb
+  created new head
+
+Case HN: no msg
+
+  $ echo 2 >> bb
+  $ hg ci -m "b5 (HN)"
+
+Case BN: msg
+
+  $ hg branch -f default
+  marked working directory as branch default
+  $ echo 1 > aa
+  $ hg ci -Am "a6 (BN): new branch root"
+  adding aa
+  created new head
+
+Case CN: msg
+
+  $ hg up -q 4
+  $ echo 3 >> bbb
+  $ hg ci -Am "b7 (CN): regular new head"
+  adding bbb
+  created new head
+
+Case BB: msg
+
+  $ hg up -q 4
+  $ hg merge -q 3
+  $ hg branch -f default
+  marked working directory as branch default
+  $ hg ci -m "a8 (BB): weird new branch root"
+  created new head
+
+Case CB: msg
+
+  $ hg up -q 4
+  $ hg merge -q 1
+  $ hg ci -m "b9 (CB): new head from branch merge"
+  created new head
+
+Case HB: no msg
+
+  $ hg up -q 7
+  $ hg merge -q 6
+  $ hg ci -m "b10 (HB): continuing head from branch merge"
+
+Case CC: msg
+
+  $ hg up -q 4
+  $ hg merge -q 2
+  $ hg ci -m "b11 (CC): new head from merge"
+  created new head
+
+Case CH: no msg
+
+  $ hg up -q 2
+  $ hg merge -q 10
+  $ hg ci -m "b12 (CH): continuing head from merge"
+
+Case HH: no msg
+
+  $ hg merge -q 3
+  $ hg ci -m "b12 (HH): merging two heads"
+