previous: add test case when it's broken on obsolete cset stable
authorPulkit Goyal <7895pulkit@gmail.com>
Fri, 16 Mar 2018 15:15:17 +0530
branchstable
changeset 3533 f06c502ce4b7
parent 3532 68e99d2c6267
child 3534 cd4db75413a2
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.
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 <module>
+      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 <lambda>
+      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 <module>
+      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 <lambda>
+      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]