--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-continue.t Sun Jan 28 19:28:08 2018 +0530
@@ -0,0 +1,189 @@
+Testing the continue functionality of `hg evolve`
+
+ $ cat >> $HGRCPATH <<EOF
+ > [ui]
+ > interactive = True
+ > [alias]
+ > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
+ > [extensions]
+ > rebase =
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+Setting up the repo
+
+ $ hg init repo
+ $ cd repo
+ $ echo ".*\.orig" > .hgignore
+ $ hg add .hgignore
+ $ hg ci -m "added hgignore"
+ $ for ch in a b c d; do echo foo>$ch; hg add $ch; hg ci -qm "added "$ch; done
+
+ $ hg glog
+ @ 4:c41c793e0ef1 added d
+ | () draft
+ o 3:ca1b80f7960a added c
+ | () draft
+ o 2:b1661037fa25 added b
+ | () draft
+ o 1:c7586e2a9264 added a
+ | () draft
+ o 0:8fa14d15e168 added hgignore
+ () draft
+
+Simple case of evolve --continue
+
+ $ hg up ca1b80f7960a
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo bar > d
+ $ hg add d
+ $ hg amend
+ 1 new orphan changesets
+ $ hg glog
+ @ 5:cb6a2ab625bb added c
+ | () draft
+ | * 4:c41c793e0ef1 added d
+ | | () draft
+ | x 3:ca1b80f7960a added c
+ |/ () draft
+ o 2:b1661037fa25 added b
+ | () draft
+ o 1:c7586e2a9264 added a
+ | () draft
+ o 0:8fa14d15e168 added hgignore
+ () draft
+
+ $ hg evolve --all
+ move:[4] added d
+ atop:[5] added c
+ merging d
+ warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+ evolve failed!
+ fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort
+ abort: unresolved merge conflicts (see hg help resolve)
+ [255]
+
+ $ echo foo > d
+ $ hg resolve -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+
+ $ hg evolve --continue
+ evolving 4:c41c793e0ef1 "added d"
+
+ $ hg glog
+ @ 6:2a4e03d422e2 added d
+ | () draft
+ o 5:cb6a2ab625bb added c
+ | () draft
+ o 2:b1661037fa25 added b
+ | () draft
+ o 1:c7586e2a9264 added a
+ | () draft
+ o 0:8fa14d15e168 added hgignore
+ () draft
+
+Case when conflicts resolution lead to empty wdir in evolve --continue
+
+ $ echo foo > e
+ $ hg ci -Aqm "added e"
+ $ hg prev
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ [6] added d
+ $ echo bar > e
+ $ hg add e
+ $ hg amend
+ 1 new orphan changesets
+
+ $ hg glog
+ @ 8:00a5c774cc37 added d
+ | () draft
+ | * 7:ad0a59d83efe added e
+ | | () draft
+ | x 6:2a4e03d422e2 added d
+ |/ () draft
+ o 5:cb6a2ab625bb added c
+ | () draft
+ o 2:b1661037fa25 added b
+ | () draft
+ o 1:c7586e2a9264 added a
+ | () draft
+ o 0:8fa14d15e168 added hgignore
+ () draft
+
+ $ hg evolve
+ move:[7] added e
+ atop:[8] added d
+ merging e
+ warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
+ evolve failed!
+ fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort
+ abort: unresolved merge conflicts (see hg help resolve)
+ [255]
+
+ $ echo bar > e
+ $ hg resolve -m
+ (no more unresolved files)
+ continue: hg evolve --continue
+ $ hg diff
+
+XXX: maybe we should add a message here about evolve resulting in no commit
+ $ hg evolve --continue
+ evolving 7:ad0a59d83efe "added e"
+ ** 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+64-87416288be98)
+ ** Extensions loaded: rebase, evolve
+ Traceback (most recent call last):
+ File "/tmp/hgtests.vDbR61/install/bin/hg", line 41, in <module>
+ dispatch.run()
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 88, in run
+ status = (dispatch(req) or 0) & 255
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 183, in dispatch
+ ret = _runcatch(req)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 324, in _runcatch
+ return _callcatch(ui, _runcatchfunc)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 332, in _callcatch
+ return scmutil.callcatch(ui, func)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/scmutil.py", line 154, in callcatch
+ return func()
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 314, in _runcatchfunc
+ return _dispatch(req)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 918, in _dispatch
+ cmdpats, cmdoptions)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 673, in runcommand
+ ret = _runcommand(ui, options, cmd, d)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 926, in _runcommand
+ return cmdfunc()
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/dispatch.py", line 915, in <lambda>
+ d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/util.py", line 1195, in check
+ return func(*args, **kwargs)
+ File "/home/foobar/repo/mutable-history/hgext3rd/evolve/evolvecmd.py", line 1141, in evolve
+ obsolete.createmarkers(repo, [(ctx, (repo[node],))])
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/obsolete.py", line 1115, in createmarkers
+ ui=repo.ui)
+ File "/tmp/hgtests.vDbR61/install/lib/python/mercurial/obsolete.py", line 621, in create
+ if len(succ) != 20:
+ TypeError: object of type 'NoneType' has no len()
+ [1]
+
+ $ hg glog
+ @ 8:00a5c774cc37 added d
+ | () draft
+ | * 7:ad0a59d83efe added e
+ | | () draft
+ | x 6:2a4e03d422e2 added d
+ |/ () draft
+ o 5:cb6a2ab625bb added c
+ | () draft
+ o 2:b1661037fa25 added b
+ | () draft
+ o 1:c7586e2a9264 added a
+ | () draft
+ o 0:8fa14d15e168 added hgignore
+ () draft
+