diff -r 11a2bc798deb -r 0a6954bd6502 tests/test-topic-stack-complex.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-topic-stack-complex.t Mon Dec 11 23:33:50 2017 +0530 @@ -0,0 +1,168 @@ +Testing `hg stack` on complex cases when we have multiple successors because of +divergence, split etc. + $ . "$TESTDIR/testlib/topic_setup.sh" + +Setup + + $ cat << EOF >> $HGRCPATH + > [experimental] + > evolution = all + > [ui] + > interactive = True + > [extensions] + > show = + > EOF + $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH + + $ hg init test + $ cd test + $ echo foo > foo + $ hg add foo + $ hg ci -m "Added foo" + $ hg phase -r . --public + $ hg topic foo + marked working directory as topic: foo + $ echo a > a + $ echo b > b + $ hg ci -Aqm "Added a and b" + $ echo c > c + $ echo d > d + $ hg ci -Aqm "Added c and d" + $ echo e > e + $ echo f > f + $ hg ci -Aqm "Added e and f" + $ hg show work + @ f1d3 (foo) Added e and f + o 8e82 (foo) Added c and d + o 002b (foo) Added a and b + o f360 Added foo + +Testing in case of split within the topic + + $ hg stack + ### topic: foo + ### target: default (branch) + t3@ Added e and f (current) + t2: Added c and d + t1: Added a and b + t0^ Added foo (base) + $ hg prev + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + [2] Added c and d + + $ echo 0 > num + $ cat > editor.sh << '__EOF__' + > NUM=$(cat num) + > NUM=`expr "$NUM" + 1` + > echo "$NUM" > num + > echo "split$NUM" > "$1" + > __EOF__ + $ export HGEDITOR="\"sh\" \"editor.sh\"" + + $ hg split << EOF + > y + > y + > n + > y + > EOF + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + adding c + adding d + diff --git a/c b/c + new file mode 100644 + examine changes to 'c'? [Ynesfdaq?] y + + @@ -0,0 +1,1 @@ + +c + record change 1/2 to 'c'? [Ynesfdaq?] y + + diff --git a/d b/d + new file mode 100644 + examine changes to 'd'? [Ynesfdaq?] n + + Done splitting? [yN] y + + $ hg stack + ### topic: foo + ### target: default (branch) + t4$ Added e and f (unstable) + t3@ split2 (current) + t2: split1 + t1: Added a and b + t0^ Added foo (base) + + $ hg show work + @ 5cce (foo) split2 + o f26c (foo) split1 + | o f1d3 (foo) Added e and f + | x 8e82 (foo) Added c and d + |/ + o 002b (foo) Added a and b + o f360 Added foo + + $ hg prev + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + [4] split1 + $ echo foo > c + $ hg diff + diff -r f26c1b9addde c + --- a/c Thu Jan 01 00:00:00 1970 +0000 + +++ b/c Thu Jan 01 00:00:00 1970 +0000 + @@ -1,1 +1,1 @@ + -c + +foo + + $ hg amend + 1 new orphan changesets + $ hg show work + @ 7d94 (foo) split1 + | o 5cce (foo) split2 + | x f26c (foo) split1 + |/ + | o f1d3 (foo) Added e and f + | x 8e82 (foo) Added c and d + |/ + o 002b (foo) Added a and b + o f360 Added foo + + $ hg stack + ### topic: foo (2 heads) + ### target: default (branch), 2 behind + ** unknown exception encountered, please report by visiting + ** https://mercurial-scm.org/wiki/BugTracker + ** Python 2.7.12 (default, Jul 18 2016, 15:04:44) [GCC 4.8.4] + ** Mercurial Distributed SCM (version 4.4.2+379-6812f5c492c7) + ** Extensions loaded: rebase, topic, show, evolve + Traceback (most recent call last): + File "/tmp/hgtests.d2IKdr/install/bin/hg", line 41, in + dispatch.run() + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 88, in run + status = (dispatch(req) or 0) & 255 + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 177, in dispatch + ret = _runcatch(req) + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 318, in _runcatch + return _callcatch(ui, _runcatchfunc) + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 326, in _callcatch + return scmutil.callcatch(ui, func) + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/scmutil.py", line 154, in callcatch + return func() + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 308, in _runcatchfunc + return _dispatch(req) + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 912, in _dispatch + cmdpats, cmdoptions) + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 667, in runcommand + ret = _runcommand(ui, options, cmd, d) + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 920, in _runcommand + return cmdfunc() + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/dispatch.py", line 909, in + d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) + File "/tmp/hgtests.d2IKdr/install/lib/python/mercurial/util.py", line 1188, in check + return func(*args, **kwargs) + File "/home/pulkit/repo/mutable-history/hgext3rd/topic/__init__.py", line 663, in cmdstack + return stack.showstack(ui, repo, branch=branch, topic=topic, opts=opts) + File "/home/pulkit/repo/mutable-history/hgext3rd/topic/stack.py", line 288, in showstack + p1 = repo[_singlesuccessor(repo, p1)] + File "/home/pulkit/repo/mutable-history/hgext3rd/topic/evolvebits.py", line 92, in _singlesuccessor + raise MultipleSuccessorsError(newer) + hgext3rd.topic.evolvebits.MultipleSuccessorsError + [1]