# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1521193517 -19800 # Node ID f06c502ce4b725a7a16d9ae28518ce7c2feb580b # Parent 68e99d2c6267a04de8b9783f307b20c6737471bf previous: add test case when it's broken on obsolete cset This patch adds couple of tests showing `hg previous` is broken on obsolete changeset when the successor has different topic. Upcoming patch will fix this. diff -r 68e99d2c6267 -r f06c502ce4b7 tests/test-evolve-topic.t --- a/tests/test-evolve-topic.t Fri Mar 16 15:01:44 2018 +0530 +++ b/tests/test-evolve-topic.t Fri Mar 16 15:15:17 2018 +0530 @@ -326,3 +326,134 @@ $ hg prev 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [14] add ggg + +When the current topic and successors topic are same, but obsolete cset has +different topic + + $ hg rebase -s d2dc89c57700 -d d834582d9ee3 --config extensions.rebase= + rebasing 16:d2dc89c57700 "add iii" (bar) + 1 new orphan changesets + rebasing 17:9bf430c106b7 "add jjj" (bar) + 1 new orphan changesets + $ hg log -Gr 12:: + * 21 - {bar} 7542e76aba2c add jjj (draft) + | + * 20 - {bar} 7858bd7e9906 add iii (draft) + | + * 19 - {bar} d834582d9ee3 add hhh (draft) + | + | o 18 - {bar} 793eb6370b2d add fff (draft) + | | + @ | 14 - {bar} 16d6f664b17c add ggg (draft) + | | + x | 13 - {foo} 070c5573d8f9 add fff (draft) + |/ + o 12 - {foo} 42b49017ff90 add eee (draft) + | + ~ + + $ hg up 070c5573d8f9 + switching to topic foo + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + working directory parent is obsolete! (070c5573d8f9) + (use 'hg evolve' to update to its successor: 793eb6370b2d) + + $ hg topic bar + + $ hg prev + ** Unknown exception encountered with possibly-broken third-party extension evolve + ** which supports versions 4.4 of Mercurial. + ** Please disable evolve and try your action again. + ** If that fixes the bug please report it to https://bz.mercurial-scm.org/ + ** Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] + ** Mercurial Distributed SCM (version 4.5.2+1098-cdc73e5c75af) + ** Extensions loaded: rebase, evolve, topic + Traceback (most recent call last): + File "/tmp/hgtests.PuAW80/install/bin/hg", line 41, in + dispatch.run() + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 88, in run + status = (dispatch(req) or 0) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 208, in dispatch + ret = _runcatch(req) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 349, in _runcatch + return _callcatch(ui, _runcatchfunc) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 357, in _callcatch + return scmutil.callcatch(ui, func) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/scmutil.py", line 154, in callcatch + return func() + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 339, in _runcatchfunc + return _dispatch(req) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 943, in _dispatch + cmdpats, cmdoptions) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 700, in runcommand + ret = _runcommand(ui, options, cmd, d) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 951, in _runcommand + return cmdfunc() + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 940, in + d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/util.py", line 1497, in check + return func(*args, **kwargs) + File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 1051, in cmdprevious + opts.get('move_bookmark'), topic) + File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 995, in _findprevtarget + if currenttopic and topic and _gettopicidx(p1) != 1: + File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 957, in _gettopicidx + return getattr(ctx, 'topicidx', lambda: None)() + File "/home/foobar/repo/mutable-history/hgext3rd/topic/__init__.py", line 247, in _contexttopicidx + return revlist.index(succ) + File "/home/foobar/repo/mutable-history/hgext3rd/topic/stack.py", line 95, in index + return self.revs.index(item) + ValueError: 18 is not in list + [1] + +When current topic and obsolete cset topic are same but successor has different +one + + $ hg up 070c5573d8f9 + switching to topic foo + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg prev + ** Unknown exception encountered with possibly-broken third-party extension evolve + ** which supports versions 4.4 of Mercurial. + ** Please disable evolve and try your action again. + ** If that fixes the bug please report it to https://bz.mercurial-scm.org/ + ** Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] + ** Mercurial Distributed SCM (version 4.5.2+1098-cdc73e5c75af) + ** Extensions loaded: rebase, evolve, topic + Traceback (most recent call last): + File "/tmp/hgtests.PuAW80/install/bin/hg", line 41, in + dispatch.run() + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 88, in run + status = (dispatch(req) or 0) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 208, in dispatch + ret = _runcatch(req) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 349, in _runcatch + return _callcatch(ui, _runcatchfunc) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 357, in _callcatch + return scmutil.callcatch(ui, func) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/scmutil.py", line 154, in callcatch + return func() + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 339, in _runcatchfunc + return _dispatch(req) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 943, in _dispatch + cmdpats, cmdoptions) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 700, in runcommand + ret = _runcommand(ui, options, cmd, d) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 951, in _runcommand + return cmdfunc() + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/dispatch.py", line 940, in + d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) + File "/tmp/hgtests.PuAW80/install/lib/python/mercurial/util.py", line 1497, in check + return func(*args, **kwargs) + File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 1051, in cmdprevious + opts.get('move_bookmark'), topic) + File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 995, in _findprevtarget + if currenttopic and topic and _gettopicidx(p1) != 1: + File "/home/foobar/repo/mutable-history/hgext3rd/evolve/__init__.py", line 957, in _gettopicidx + return getattr(ctx, 'topicidx', lambda: None)() + File "/home/foobar/repo/mutable-history/hgext3rd/topic/__init__.py", line 247, in _contexttopicidx + return revlist.index(succ) + File "/home/foobar/repo/mutable-history/hgext3rd/topic/stack.py", line 95, in index + return self.revs.index(item) + ValueError: 18 is not in list + [1]