# HG changeset patch # User Pierre-Yves David # Date 1504976564 -19800 # Node ID 044686b25cf7422f8354baa53bc7e2db7a939fbf # Parent 17749d9d3968155ba534a6b1135e5d3a81eb0f70 tests: add tests for showing stack when merge is involved This patch adds tests of showing stack when merges are involved. This will help us in changing the behaviour and realising that in later patches. diff -r 17749d9d3968 -r 044686b25cf7 tests/test-topic-stack.t --- a/tests/test-topic-stack.t Mon Sep 04 12:41:30 2017 +0200 +++ b/tests/test-topic-stack.t Sat Sep 09 22:32:44 2017 +0530 @@ -550,3 +550,227 @@ ^ c_D t1: c_f t0^ c_e (base) + +case involving a merge +---------------------- + + $ cd .. + $ hg init stack-gap-merge + $ cd stack-gap-merge + + $ echo aaa > aaa + $ hg commit -Am 'c_A' + adding aaa + $ hg topic red + $ echo bbb > bbb + $ hg commit -Am 'c_B' + adding bbb + $ echo ccc > ccc + $ hg commit -Am 'c_C' + adding ccc + $ hg topic blue + $ echo ddd > ddd + $ hg commit -Am 'c_D' + adding ddd + $ hg up 'desc("c_B")' + switching to topic red + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ echo eee > eee + $ hg commit -Am 'c_E' + adding eee + $ echo fff > fff + $ hg commit -Am 'c_F' + adding fff + $ hg topic blue + $ echo ggg > ggg + $ hg commit -Am 'c_G' + adding ggg + $ hg up 'desc("c_D")' + 2 files updated, 0 files merged, 3 files removed, 0 files unresolved + $ hg topic red + $ hg merge 'desc("c_G")' + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg commit -Am 'c_H' + $ hg topic blue + $ echo iii > iii + $ hg ci -Am 'c_I' + adding iii + + $ hg log -G + @ 8 default {blue} draft c_I + | + o 7 default {red} draft c_H + |\ + | o 6 default {blue} draft c_G + | | + | o 5 default {red} draft c_F + | | + | o 4 default {red} draft c_E + | | + o | 3 default {blue} draft c_D + | | + o | 2 default {red} draft c_C + |/ + o 1 default {red} draft c_B + | + o 0 default {} draft c_A + + + $ hg stack red + ### topic: red (3 heads) + ### branch: default, 6 behind + t5: c_C + t2^ c_B (base) + t4: c_F + t3: c_E + t2: c_B + ^ c_A + t1: c_H + t0^ c_D (base) + $ hg stack blue + ### topic: blue (3 heads) + ### branch: default, ambigious rebase destination + t3: c_D + ^ c_C + t2: c_G + ^ c_F + t1@ c_I (current) + t0^ c_H (base) + +Even with some obsolete and orphan changesets + +(the ordering of each branch of "blue" change because their hash change. we +should stabilize this eventuelly) + + $ hg up 'desc("c_B")' + switching to topic red + 0 files updated, 0 files merged, 6 files removed, 0 files unresolved + $ hg commit --amend --user test2 + $ hg up 'desc("c_C")' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg commit --amend --user test2 + $ hg up 'desc("c_D")' + switching to topic blue + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg commit --amend --user test2 + + $ hg log -G --rev 'sort(all(), "topo")' + @ 11 default {blue} draft c_D + | + | o 8 default {blue} draft c_I + | | + | o 7 default {red} draft c_H + | |\ + | | o 6 default {blue} draft c_G + | | | + | | o 5 default {red} draft c_F + | | | + | | o 4 default {red} draft c_E + | | | + | x | 3 default {blue} draft c_D + |/ / + x / 2 default {red} draft c_C + |/ + | o 10 default {red} draft c_C + |/ + x 1 default {red} draft c_B + | + | o 9 default {red} draft c_B + |/ + o 0 default {} draft c_A + + + $ hg stack red + ### topic: red (3 heads) + ### branch: default, ambigious rebase destination + t5$ c_H (unstable) + ^ c_D + t4$ c_C (unstable) + t1^ c_B (base) + t3$ c_F (unstable) + t2$ c_E (unstable) + t1: c_B + t0^ c_A (base) + $ hg stack blue + ### topic: blue (3 heads) + ### branch: default, ambigious rebase destination + t3$ c_G (unstable) + ^ c_F + t2$ c_I (unstable) + ^ c_H + t1$ c_D (current unstable) + t0^ c_C (base) + +more obsolescence + + $ hg up 'max(desc("c_H"))' + switching to topic red + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg commit --amend --user test3 + $ hg up 'max(desc("c_G"))' + switching to topic blue + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ hg commit --amend --user test3 + $ hg up 'max(desc("c_B"))' + switching to topic red + 0 files updated, 0 files merged, 3 files removed, 0 files unresolved + $ hg commit --amend --user test3 + $ hg up 'max(desc("c_C"))' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg commit --amend --user test3 + $ hg up 'max(desc("c_D"))' + switching to topic blue + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg commit --amend --user test3 + + $ hg log -G --rev 'sort(all(), "topo")' + @ 16 default {blue} draft c_D + | + | o 13 default {blue} draft c_G + | | + | | o 12 default {red} draft c_H + | | |\ + | | | | o 8 default {blue} draft c_I + | | | | | + | | +---x 7 default {red} draft c_H + | | | |/ + | +---x 6 default {blue} draft c_G + | | | + | o | 5 default {red} draft c_F + | | | + | o | 4 default {red} draft c_E + | | | + +---x 3 default {blue} draft c_D + | | + x | 2 default {red} draft c_C + |/ + | o 15 default {red} draft c_C + |/ + x 1 default {red} draft c_B + | + | o 14 default {red} draft c_B + |/ + o 0 default {} draft c_A + + + $ hg stack red + ### topic: red (3 heads) + ### branch: default, ambigious rebase destination + t5$ c_H (unstable) + ^ c_D + t4$ c_F (unstable) + t3$ c_E (unstable) + t1^ c_B (base) + t2$ c_C (unstable) + t1: c_B + t0^ c_A (base) + $ hg stack blue + ### topic: blue (3 heads) + ### branch: default, ambigious rebase destination + t3$ c_I (unstable) + ^ c_H + t2$ c_G (unstable) + ^ c_F + t1$ c_D (current unstable) + t0^ c_C (base)