tests: add a test file `--abort` flag while resolving phase-divergence
This patch adds a new test file test-evolve-abort-phasediv.t which will contain
tests for `hg evolve --abort` flag while resolving phase-divergence.
There is a case in this test which does not work right which will be fixed in
upcoming patches.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-abort-phasediv.t Wed May 23 02:41:08 2018 +0530
@@ -0,0 +1,218 @@
+Tests for the --abort flag for `hg evolve` command while phase-divergence resolution
+====================================================================================
+
+The `--abort` flag aborts the interuppted evolve by undoing all the work which
+was done during resolution i.e. stripping new changesets created, moving
+bookmarks back, moving working directory back.
+
+This test contains cases when `hg evolve` is doing phase-divergence resolution.
+
+Setup
+=====
+
+ $ cat >> $HGRCPATH <<EOF
+ > [phases]
+ > publish = False
+ > [alias]
+ > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
+ > [extensions]
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+ $ hg init abortrepo
+ $ cd abortrepo
+ $ 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
+
+Creating phase divergence, resolution of which will lead to conflicts
+----------------------------------------------------------------------
+
+ $ hg up .^^^
+ 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+ $ hg grab -r .~-3
+ grabbing 4:c41c793e0ef1 "added d"
+ $ echo foobar > c
+ $ hg add c
+ $ hg amend
+
+ $ hg glog --hidden
+ @ 6:ddba58020bc0 added d
+ | () draft
+ | x 5:cfe30edc6125 added d
+ |/ () draft
+ | x 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
+
+ $ hg phase -r c41c793e0ef1 --public --hidden
+ 1 new phase-divergent changesets
+
+ $ hg glog
+ @ 6:ddba58020bc0 added d
+ | () draft
+ | o 4:c41c793e0ef1 added d
+ | | () public
+ | o 3:ca1b80f7960a added c
+ | | () public
+ | o 2:b1661037fa25 added b
+ |/ () public
+ o 1:c7586e2a9264 added a
+ | () public
+ o 0:8fa14d15e168 added hgignore
+ () public
+ $ hg evolve --phase-divergent
+ recreate:[6] added d
+ atop:[4] added d
+ rebasing to destination parent: ca1b80f7960a
+ merging c
+ warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+ evolution failed!
+ fix conflict then run 'hg evolve --continue' or use `hg evolve --abort`
+ abort: unresolved merge conflicts (see hg help resolve)
+ [255]
+
+ $ hg evolve --abort
+ evolve aborted
+ working directory is now at ddba58020bc0
+
+ $ hg glog
+ @ 6:ddba58020bc0 added d
+ | () draft
+ | o 4:c41c793e0ef1 added d
+ | | () public
+ | o 3:ca1b80f7960a added c
+ | | () public
+ | o 2:b1661037fa25 added b
+ |/ () public
+ o 1:c7586e2a9264 added a
+ | () public
+ o 0:8fa14d15e168 added hgignore
+ () public
+
+When there are multiple phase-divergent changes, resolution of last one resulted
+in conflicts
+---------------------------------------------------------------------------------
+
+ $ echo foo > c
+ $ hg amend
+ $ hg phase -r ca1b80f --draft --force
+ $ hg prev
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ [1] added a
+ $ hg grab -r ca1b80f
+ grabbing 3:ca1b80f7960a "added c"
+ $ echo foobar > b
+ $ hg add b
+ $ hg amend
+ $ hg phase -r c41c793e0ef1 --public --hidden
+ 2 new phase-divergent changesets
+
+ $ hg evolve --list
+ e44ebefe4f54: added d
+ phase-divergent: c41c793e0ef1 (immutable precursor)
+
+ 28cd06b3f801: added c
+ phase-divergent: ca1b80f7960a (immutable precursor)
+
+
+ $ hg evolve --dry-run --all --phase-divergent
+ recreate:[7] added d
+ atop:[4] added d
+ hg rebase --rev e44ebefe4f54 --dest ca1b80f7960a;
+ hg update c41c793e0ef1;
+ hg revert --all --rev e44ebefe4f54;
+ hg commit --msg "phase-divergent update to e44ebefe4f54"
+ recreate:[9] added c
+ atop:[3] added c
+ hg rebase --rev 28cd06b3f801 --dest b1661037fa25;
+ hg update ca1b80f7960a;
+ hg revert --all --rev 28cd06b3f801;
+ hg commit --msg "phase-divergent update to 28cd06b3f801"
+
+ $ hg glog --hidden
+ @ 9:28cd06b3f801 added c
+ | () draft
+ | x 8:9ff8adbe8a24 added c
+ |/ () draft
+ | * 7:e44ebefe4f54 added d
+ |/ () draft
+ | x 6:ddba58020bc0 added d
+ |/ () draft
+ | x 5:cfe30edc6125 added d
+ |/ () draft
+ | o 4:c41c793e0ef1 added d
+ | | () public
+ | o 3:ca1b80f7960a added c
+ | | () public
+ | o 2:b1661037fa25 added b
+ |/ () public
+ o 1:c7586e2a9264 added a
+ | () public
+ o 0:8fa14d15e168 added hgignore
+ () public
+
+ $ hg evolve --phase-divergent --all
+ recreate:[7] added d
+ atop:[4] added d
+ rebasing to destination parent: ca1b80f7960a
+ computing new diff
+ committed as c41c793e0ef1
+ recreate:[9] added c
+ atop:[3] added c
+ rebasing to destination parent: b1661037fa25
+ merging b
+ warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
+ evolution failed!
+ fix conflict then run 'hg evolve --continue' or use `hg evolve --abort`
+ abort: unresolved merge conflicts (see hg help resolve)
+ [255]
+
+ $ hg evolve --abort
+ cannot clean up public changesets: c41c793e0ef1
+ abort: unable to abort interrupted evolve, use 'hg evolve --stop' to stop evolve
+ [255]
+
+ $ hg glog --hidden
+ x 10:b7aedbe61ce6 added d
+ | () draft
+ | * 9:28cd06b3f801 added c
+ | | () draft
+ | | x 8:9ff8adbe8a24 added c
+ | |/ () draft
+ | | x 7:e44ebefe4f54 added d
+ | |/ () draft
+ | | x 6:ddba58020bc0 added d
+ | |/ () draft
+ | | x 5:cfe30edc6125 added d
+ | |/ () draft
+ +---o 4:c41c793e0ef1 added d
+ | | () public
+ o | 3:ca1b80f7960a added c
+ | | () public
+ @ | 2:b1661037fa25 added b
+ |/ () public
+ o 1:c7586e2a9264 added a
+ | () public
+ o 0:8fa14d15e168 added hgignore
+ () public