diff tests/test-stack-branch.t @ 2669:b933a8068c17

topic: add some initial support for using stack on named branch Stack is a useful command that can make sense in other context. The current support is hacky and awful, but we have something!
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 28 Jun 2017 02:45:57 +0200
parents
children f5d52fa1cd55
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-stack-branch.t	Wed Jun 28 02:45:57 2017 +0200
@@ -0,0 +1,257 @@
+
+  $ . "$TESTDIR/testlib/topic_setup.sh"
+
+Initial setup
+
+  $ cat << EOF >> $HGRCPATH
+  > [ui]
+  > logtemplate = {rev} {branch} \{{get(namespaces, "topics")}} {phase} {desc|firstline}\n
+  > [experimental]
+  > evolution=createmarkers,exchange,allowunstable
+  > EOF
+
+  $ hg init main
+  $ cd main
+  $ hg branch other
+  marked working directory as branch other
+  (branches are permanent and global, did you want a bookmark?)
+  $ echo aaa > aaa
+  $ hg add aaa
+  $ hg commit -m c_a
+  $ echo aaa > bbb
+  $ hg add bbb
+  $ hg commit -m c_b
+  $ hg branch foo
+  marked working directory as branch foo
+  $ echo aaa > ccc
+  $ hg add ccc
+  $ hg commit -m c_c
+  $ echo aaa > ddd
+  $ hg add ddd
+  $ hg commit -m c_d
+  $ echo aaa > eee
+  $ hg add eee
+  $ hg commit -m c_e
+  $ echo aaa > fff
+  $ hg add fff
+  $ hg commit -m c_f
+  $ hg log -G
+  @  5 foo {} draft c_f
+  |
+  o  4 foo {} draft c_e
+  |
+  o  3 foo {} draft c_d
+  |
+  o  2 foo {} draft c_c
+  |
+  o  1 other {} draft c_b
+  |
+  o  0 other {} draft c_a
+  
+
+Check that topic without any parent does not crash --list
+---------------------------------------------------------
+
+  $ hg up other
+  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ hg stack
+  ### topic: None
+  ### branch: other
+  b2@ c_b (current)
+  b1: c_a
+  $ hg phase --public 'branch("other")'
+  $ hg up foo
+  4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+Simple test
+-----------
+
+'hg stack' list all changeset in the topic
+
+  $ hg branch
+  foo
+  $ hg stack
+  ### topic: None
+  ### branch: foo
+  b4@ c_f (current)
+  b3: c_e
+  b2: c_d
+  b1: c_c
+    ^ c_b
+
+Test "t#" reference
+-------------------
+
+  $ hg up b2
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ hg up foo
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg up b42
+  abort: cannot resolve "b42": branch "foo" has only 4 changesets
+  [255]
+  $ hg up b2
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ hg summary
+  parent: 3:f61adbacd17a 
+   c_d
+  branch: foo
+  commit: (clean)
+  update: 2 new changesets (update)
+  phases: 4 draft
+
+Case with some of the branch unstable
+------------------------------------
+
+  $ echo bbb > ddd
+  $ hg commit --amend
+  $ hg log -G
+  @  7 foo {} draft c_d
+  |
+  | o  5 foo {} draft c_f
+  | |
+  | o  4 foo {} draft c_e
+  | |
+  | x  3 foo {} draft c_d
+  |/
+  o  2 foo {} draft c_c
+  |
+  o  1 other {} public c_b
+  |
+  o  0 other {} public c_a
+  
+  $ hg stack
+  ### topic: None
+  ### branch: foo
+  b4$ c_f (unstable)
+  b3$ c_e (unstable)
+  b2@ c_d (current)
+  b1: c_c
+    ^ c_b
+  $ hg up b3
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg stack
+  ### topic: None
+  ### branch: foo
+  b4$ c_f (unstable)
+  b3$ c_e (current unstable)
+  b2: c_d
+  b1: c_c
+    ^ c_b
+  $ hg up b2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+Also test the revset:
+
+  $ hg log -r 'stack()'
+  abort: no active topic to list
+  [255]
+
+Case with multiple heads on the topic
+-------------------------------------
+
+Make things linear again
+
+  $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()'
+  rebasing 4:4f2a69f6d380 "c_e"
+  rebasing 5:913c298d8b0a "c_f"
+  $ hg log -G
+  o  9 foo {} draft c_f
+  |
+  o  8 foo {} draft c_e
+  |
+  @  7 foo {} draft c_d
+  |
+  o  2 foo {} draft c_c
+  |
+  o  1 other {} public c_b
+  |
+  o  0 other {} public 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
+  $ hg log -G
+  @  11 foo {} draft c_h
+  |
+  o  10 foo {} draft c_g
+  |
+  | o  9 foo {} draft c_f
+  | |
+  | o  8 foo {} draft c_e
+  |/
+  o  7 foo {} draft c_d
+  |
+  o  2 foo {} draft c_c
+  |
+  o  1 other {} public c_b
+  |
+  o  0 other {} public c_a
+  
+
+Test output
+
+  $ hg stack
+  ### topic: None (2 heads)
+  ### branch: foo
+  b6: c_f
+  b5: c_e
+  b2^ c_d (base)
+  b4@ c_h (current)
+  b3: c_g
+  b2: c_d
+  b1: c_c
+    ^ c_b
+
+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:2ebb6e48ab8a "c_g"
+  rebasing 11:634f38e27a1d "c_h"
+  $ hg log -G
+  o  15 foo {} draft c_h
+  |
+  o  14 foo {} draft c_g
+  |
+  @  13 foo {} draft c_D
+  |
+  | o  9 foo {} draft c_f
+  | |
+  | o  8 foo {} draft c_e
+  | |
+  | x  7 foo {} draft c_d
+  |/
+  o  2 foo {} draft c_c
+  |
+  o  1 other {} public c_b
+  |
+  o  0 other {} public c_a
+  
+
+  $ hg stack
+  ### topic: None (2 heads)
+  ### branch: foo
+  b6$ c_f (unstable)
+  b5$ c_e (unstable)
+  b2^ c_D (base)
+  b4: c_h
+  b3: c_g
+  b2@ c_D (current)
+  b1: c_c
+    ^ c_b
+