tests/test-stack.t
changeset 37001 407934a97bc7
child 37004 68fcc5503ec5
equal deleted inserted replaced
37000:40583c7afd63 37001:407934a97bc7
       
     1 
       
     2 This test test the low-level definition of stack, agnostic from all formatting
       
     3 
       
     4 Initial setup
       
     5 
       
     6   $ cat << EOF >> $HGRCPATH
       
     7   > [ui]
       
     8   > logtemplate = {rev} {branch} {phase} {desc|firstline}\n
       
     9   > [extensions]
       
    10   > rebase=
       
    11   > [experimental]
       
    12   > evolution=createmarkers,exchange,allowunstable
       
    13   > EOF
       
    14 
       
    15   $ hg init main
       
    16   $ cd main
       
    17   $ hg branch other
       
    18   marked working directory as branch other
       
    19   (branches are permanent and global, did you want a bookmark?)
       
    20   $ echo aaa > aaa
       
    21   $ hg add aaa
       
    22   $ hg commit -m c_a
       
    23   $ echo aaa > bbb
       
    24   $ hg add bbb
       
    25   $ hg commit -m c_b
       
    26   $ hg branch foo
       
    27   marked working directory as branch foo
       
    28   $ echo aaa > ccc
       
    29   $ hg add ccc
       
    30   $ hg commit -m c_c
       
    31   $ echo aaa > ddd
       
    32   $ hg add ddd
       
    33   $ hg commit -m c_d
       
    34   $ echo aaa > eee
       
    35   $ hg add eee
       
    36   $ hg commit -m c_e
       
    37   $ echo aaa > fff
       
    38   $ hg add fff
       
    39   $ hg commit -m c_f
       
    40   $ hg log -G
       
    41   @  5 foo draft c_f
       
    42   |
       
    43   o  4 foo draft c_e
       
    44   |
       
    45   o  3 foo draft c_d
       
    46   |
       
    47   o  2 foo draft c_c
       
    48   |
       
    49   o  1 other draft c_b
       
    50   |
       
    51   o  0 other draft c_a
       
    52   
       
    53 
       
    54 Check that stack doesn't include public changesets
       
    55 --------------------------------------------------
       
    56 
       
    57   $ hg up other
       
    58   0 files updated, 0 files merged, 4 files removed, 0 files unresolved
       
    59   $ hg log -G -r "stack()"
       
    60   @  1 other draft c_b
       
    61   |
       
    62   o  0 other draft c_a
       
    63   
       
    64   $ hg phase --public 'branch("other")'
       
    65   $ hg log -G -r "stack()"
       
    66   $ hg up foo
       
    67   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    68 
       
    69 Simple test
       
    70 -----------
       
    71 
       
    72 'stack()' list all changeset in the branch
       
    73 
       
    74   $ hg branch
       
    75   foo
       
    76   $ hg log -G -r "stack()"
       
    77   @  5 foo draft c_f
       
    78   |
       
    79   o  4 foo draft c_e
       
    80   |
       
    81   o  3 foo draft c_d
       
    82   |
       
    83   o  2 foo draft c_c
       
    84   |
       
    85   ~
       
    86 
       
    87 Case with some of the branch unstable
       
    88 ------------------------------------
       
    89 
       
    90   $ hg up 3
       
    91   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
    92   $ echo bbb > ddd
       
    93   $ hg commit --amend
       
    94   2 new orphan changesets
       
    95   $ hg log -G
       
    96   @  6 foo draft c_d
       
    97   |
       
    98   | *  5 foo draft c_f
       
    99   | |
       
   100   | *  4 foo draft c_e
       
   101   | |
       
   102   | x  3 foo draft c_d
       
   103   |/
       
   104   o  2 foo draft c_c
       
   105   |
       
   106   o  1 other public c_b
       
   107   |
       
   108   o  0 other public c_a
       
   109   
       
   110   $ hg log -G -r "stack()"
       
   111   @  6 foo draft c_d
       
   112   |
       
   113   ~
       
   114   $ hg up -r "desc(c_e)"
       
   115   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   116   $ hg log -G -r "stack()"
       
   117   @  4 foo draft c_e
       
   118   |
       
   119   x  3 foo draft c_d
       
   120   |
       
   121   ~
       
   122   $ hg up -r "desc(c_d)"
       
   123   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   124 
       
   125   $ hg log -G -r "stack()"
       
   126   @  6 foo draft c_d
       
   127   |
       
   128   ~
       
   129 
       
   130 Case with multiple topological heads
       
   131 ------------------------------------
       
   132 
       
   133 Make things linear again
       
   134 
       
   135   $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()'
       
   136   rebasing 4:4f2a69f6d380 "c_e"
       
   137   rebasing 5:913c298d8b0a "c_f"
       
   138   $ hg log -G
       
   139   o  8 foo draft c_f
       
   140   |
       
   141   o  7 foo draft c_e
       
   142   |
       
   143   @  6 foo draft c_d
       
   144   |
       
   145   o  2 foo draft c_c
       
   146   |
       
   147   o  1 other public c_b
       
   148   |
       
   149   o  0 other public c_a
       
   150   
       
   151 
       
   152 Create the second branch
       
   153 
       
   154   $ hg up 'desc(c_d)'
       
   155   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   156   $ echo aaa > ggg
       
   157   $ hg add ggg
       
   158   $ hg commit -m c_g
       
   159   created new head
       
   160   $ echo aaa > hhh
       
   161   $ hg add hhh
       
   162   $ hg commit -m c_h
       
   163   $ hg log -G
       
   164   @  10 foo draft c_h
       
   165   |
       
   166   o  9 foo draft c_g
       
   167   |
       
   168   | o  8 foo draft c_f
       
   169   | |
       
   170   | o  7 foo draft c_e
       
   171   |/
       
   172   o  6 foo draft c_d
       
   173   |
       
   174   o  2 foo draft c_c
       
   175   |
       
   176   o  1 other public c_b
       
   177   |
       
   178   o  0 other public c_a
       
   179   
       
   180 
       
   181 Test output
       
   182 
       
   183   $ hg log -G -r "stack(10)"
       
   184   @  10 foo draft c_h
       
   185   |
       
   186   o  9 foo draft c_g
       
   187   |
       
   188   ~
       
   189   $ hg log -G -r "stack(8)"
       
   190   o  8 foo draft c_f
       
   191   |
       
   192   o  7 foo draft c_e
       
   193   |
       
   194   ~
       
   195   $ hg log -G -r "stack(head())"
       
   196   @  10 foo draft c_h
       
   197   |
       
   198   o  9 foo draft c_g
       
   199   |
       
   200   ~
       
   201   o  8 foo draft c_f
       
   202   |
       
   203   o  7 foo draft c_e
       
   204   |
       
   205   ~
       
   206 Check the stack order
       
   207   $ hg log -r "first(stack())"
       
   208   10 foo draft c_h
       
   209   $ hg log -r "first(stack(10))"
       
   210   10 foo draft c_h
       
   211   $ hg log -r "first(stack(8))"
       
   212   8 foo draft c_f
       
   213   $ hg log -r "first(stack(head()))"
       
   214   8 foo draft c_f
       
   215 
       
   216 Case with multiple heads with unstability involved
       
   217 --------------------------------------------------
       
   218 
       
   219 We amend the message to make sure the display base pick the right changeset
       
   220 
       
   221   $ hg up 'desc(c_d)'
       
   222   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   223   $ echo ccc > ddd
       
   224   $ hg commit --amend -m 'c_D'
       
   225   4 new orphan changesets
       
   226   $ hg rebase -d . -s 'desc(c_g)'
       
   227   rebasing 9:2ebb6e48ab8a "c_g"
       
   228   rebasing 10:634f38e27a1d "c_h"
       
   229   $ hg log -G
       
   230   o  13 foo draft c_h
       
   231   |
       
   232   o  12 foo draft c_g
       
   233   |
       
   234   @  11 foo draft c_D
       
   235   |
       
   236   | *  8 foo draft c_f
       
   237   | |
       
   238   | *  7 foo draft c_e
       
   239   | |
       
   240   | x  6 foo draft c_d
       
   241   |/
       
   242   o  2 foo draft c_c
       
   243   |
       
   244   o  1 other public c_b
       
   245   |
       
   246   o  0 other public c_a
       
   247   
       
   248 
       
   249 We should improve stack definition to also show 12 and 13 here
       
   250   $ hg log -G -r "stack()"
       
   251   @  11 foo draft c_D
       
   252   |
       
   253   ~