--- a/tests/test-topic-stack.t Mon Mar 14 19:22:21 2016 +0000
+++ b/tests/test-topic-stack.t Mon Mar 14 23:37:58 2016 +0000
@@ -57,6 +57,7 @@
$ hg topic
* foo
$ hg topic --list
+ _ c_b
t0: c_c
t1: c_d
t2: c_e
@@ -104,7 +105,115 @@
o 0 default {} draft c_a
$ hg topic --list
+ _ c_b
t0: c_c
t1@ c_d (current)
t2$ c_e (unstable)
t3$ c_f (unstable)
+
+Case with multiple heads on the topic
+-------------------------------------
+
+Make things linear again
+
+ $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()'
+ rebasing 4:91fa8808d101 "c_e"
+ rebasing 5:4ec5094907b7 "c_f"
+ $ hg log -G
+ o 9 default {foo} draft c_f
+ |
+ o 8 default {foo} draft c_e
+ |
+ @ 7 default {foo} draft c_d
+ |
+ o 2 default {foo} draft c_c
+ |
+ o 1 default {} draft c_b
+ |
+ o 0 default {} draft c_a
+
+
+
+Create the second branch
+
+ $ hg up 'desc(c_d)'
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo aaa > ggg
+ $ hg add ggg
+ $ hg commit -m c_g
+ created new head
+ $ echo aaa > hhh
+ $ hg add hhh
+ $ hg commit -m c_h
+ created new head
+ $ hg log -G
+ @ 11 default {foo} draft c_h
+ |
+ o 10 default {foo} draft c_g
+ |
+ | o 9 default {foo} draft c_f
+ | |
+ | o 8 default {foo} draft c_e
+ |/
+ o 7 default {foo} draft c_d
+ |
+ o 2 default {foo} draft c_c
+ |
+ o 1 default {} draft c_b
+ |
+ o 0 default {} draft c_a
+
+
+Test output
+
+ $ hg top -l
+ _ c_b
+ t0: c_c
+ t1: c_d
+ t2: c_g
+ t3@ c_h (current)
+ _ c_d
+ t4: c_e
+ t5: c_f
+
+Case with multiple heads on the topic with unstability involved
+---------------------------------------------------------------
+
+We amend the message to make sure the display base pick the right changeset
+
+ $ hg up 'desc(c_d)'
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo ccc > ddd
+ $ hg commit --amend -m 'c_D'
+ $ hg rebase -d . -s 'desc(c_g)'
+ rebasing 10:11286b4fcb3d "c_g"
+ rebasing 11:3ad57527186d "c_h"
+ $ hg log -G
+ o 15 default {foo} draft c_h
+ |
+ o 14 default {foo} draft c_g
+ |
+ @ 13 default {foo} draft c_D
+ |
+ | o 9 default {foo} draft c_f
+ | |
+ | o 8 default {foo} draft c_e
+ | |
+ | x 7 default {foo} draft c_d
+ |/
+ o 2 default {foo} draft c_c
+ |
+ o 1 default {} draft c_b
+ |
+ o 0 default {} draft c_a
+
+
+ $ hg topic --list
+ _ c_b
+ t0: c_c
+ t1@ c_D (current)
+ t2: c_g
+ t3: c_h
+ _ c_D
+ t4$ c_e (unstable)
+ t5$ c_f (unstable)