# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1517147888 -19800 # Node ID ee72cdc2387bcc7f17067019108967029d08e505 # Parent 1baf32675ec60d622bd2c3cdce9dbf5a1020c06d tests: add tests for `hg evolve --continue` This patch adds a new test file containing tests for `hg evolve --continue`. The test file still does not contains all the tests related to `hg evolve --continue` as one of the case is broken which needs to be fixed first. The case is when resolving a conflicting evolve results in empty wdir. Next patch will fix the traceback and then a later patch will add more tests. diff -r 1baf32675ec6 -r ee72cdc2387b tests/test-evolve-continue.t --- /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 < [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 + 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 + 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 +