# HG changeset patch # User Laurent Charignon # Date 1438972791 25200 # Node ID 72eab894a89d636429f7487a9a6853237cb11bbd # Parent 19c2405cb091c5ca083176c37da22697c30803be evolve: add test for instability diff -r 19c2405cb091 -r 72eab894a89d tests/test-unstable.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-unstable.t Fri Aug 07 11:39:51 2015 -0700 @@ -0,0 +1,330 @@ + $ cat >> $HGRCPATH < [defaults] + > amend=-d "0 0" + > fold=-d "0 0" + > [web] + > push_ssl = false + > allow_push = * + > [phases] + > publish = False + > [diff] + > git = 1 + > unified = 0 + > [ui] + > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline}\n + > [extensions] + > hgext.graphlog= + > EOF + $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH + $ mkcommit() { + > echo "$1" > "$1" + > hg add "$1" + > hg ci -m "add $1" + > } + + $ mkstack() { + > # Creates a stack of commit based on $1 with messages from $2, $3 .. + > hg update "$1" -C + > shift + > mkcommits $* + > } + + $ mkcommits() { + > for i in $@; do mkcommit $i ; done + > } + +============================================================================== +Test instability resolution for a changeset unstable because its parent +is obsolete with one successor +============================================================================== + $ hg init test1 + $ cd test1 + $ mkcommits _a _b _c + $ hg up "desc(_b)" + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg amend -m "bprime" + 1 new unstable changesets + $ hg log -G + @ 3:36050226a9b9@default(draft) bprime + | + | o 2:102002290587@default(draft) add _c + | | + | x 1:37445b16603b@default(draft) add _b + |/ + o 0:135f39f4bd78@default(draft) add _a + + + $ hg evo --all --any --unstable + move:[2] add _c + atop:[3] bprime + working directory is now at fdcf3523a74d + $ hg log -G + @ 4:fdcf3523a74d@default(draft) add _c + | + o 3:36050226a9b9@default(draft) bprime + | + o 0:135f39f4bd78@default(draft) add _a + + + $ cd .. + +=============================================================================== +Test instability resolution for a merge changeset unstable because one +of its parent is obsolete +Not supported yet +============================================================================== + + $ hg init test2 + $ cd test2 + $ mkcommit base + $ mkcommits _a + $ hg up "desc(base)" + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit _c + created new head + $ hg merge "desc(_a)" >/dev/null + $ hg commit -m "merge" + $ hg up "desc(_a)" + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg amend -m "aprime" + 1 new unstable changesets + $ hg log -G + @ 4:47127ea62e5f@default(draft) aprime + | + | o 3:6b4280e33286@default(draft) merge + | |\ + +---o 2:474da87dd33b@default(draft) add _c + | | + | x 1:b3264cec9506@default(draft) add _a + |/ + o 0:b4952fcf48cf@default(draft) add base + + + $ hg evo --all --any --unstable + move:[3] merge + atop:[4] aprime + abort: no support for evolving merge changesets yet + (Redo the merge and use `hg prune --succ ` to obsolete the old one) + [255] + $ hg log -G + @ 4:47127ea62e5f@default(draft) aprime + | + | o 3:6b4280e33286@default(draft) merge + | |\ + +---o 2:474da87dd33b@default(draft) add _c + | | + | x 1:b3264cec9506@default(draft) add _a + |/ + o 0:b4952fcf48cf@default(draft) add base + + + $ cd .. + +=============================================================================== +Test instability resolution for a merge changeset unstable because both +of its parent are obsolete +Not supported yet +============================================================================== + + $ hg init test3 + $ cd test3 + $ mkcommit base + $ mkcommits _a + $ hg up "desc(base)" + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit _c + created new head + $ hg merge "desc(_a)" >/dev/null + $ hg commit -m "merge" + $ hg up "desc(_a)" + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg amend -m "aprime" + 1 new unstable changesets + $ hg up "desc(_c)" + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg amend -m "cprime" + $ hg log -G + @ 5:2db39fda7e2f@default(draft) cprime + | + | o 4:47127ea62e5f@default(draft) aprime + |/ + | o 3:6b4280e33286@default(draft) merge + | |\ + +---x 2:474da87dd33b@default(draft) add _c + | | + | x 1:b3264cec9506@default(draft) add _a + |/ + o 0:b4952fcf48cf@default(draft) add base + + + $ hg evo --all --any --unstable + move:[3] merge + atop:[5] cprime + abort: no support for evolving merge changesets yet + (Redo the merge and use `hg prune --succ ` to obsolete the old one) + [255] + $ hg log -G + @ 5:2db39fda7e2f@default(draft) cprime + | + | o 4:47127ea62e5f@default(draft) aprime + |/ + | o 3:6b4280e33286@default(draft) merge + | |\ + +---x 2:474da87dd33b@default(draft) add _c + | | + | x 1:b3264cec9506@default(draft) add _a + |/ + o 0:b4952fcf48cf@default(draft) add base + + + $ cd .. + +=============================================================================== +Test instability resolution for a changeset unstable because its parent +is obsolete with multiple successors all in one chain (simple split) +Not supported yet +============================================================================== + + $ hg init test4 + $ cd test4 + $ mkcommits _a _b _c + $ hg up "desc(_a)" + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommits bprimesplit1 bprimesplit2 + created new head + $ hg prune "desc(_b)" -s "desc(bprimesplit1) + desc(bprimesplit2)" --split + 1 changesets pruned + 1 new unstable changesets + $ hg log -G + @ 4:2a4ccc0bb20c@default(draft) add bprimesplit2 + | + o 3:8b87864bd0f4@default(draft) add bprimesplit1 + | + | o 2:102002290587@default(draft) add _c + | | + | x 1:37445b16603b@default(draft) add _b + |/ + o 0:135f39f4bd78@default(draft) add _a + + + $ hg evo --all --any --unstable + does not handle split parents yet + $ hg log -G + @ 4:2a4ccc0bb20c@default(draft) add bprimesplit2 + | + o 3:8b87864bd0f4@default(draft) add bprimesplit1 + | + | o 2:102002290587@default(draft) add _c + | | + | x 1:37445b16603b@default(draft) add _b + |/ + o 0:135f39f4bd78@default(draft) add _a + + + + $ cd .. + +=============================================================================== +Test instability resolution for a changeset unstable because its parent +is obsolete with multiple successors on one branches but in reverse +order (cross-split). +Not supported yet +============================================================================== + + $ hg init test5 + $ cd test5 + $ mkcommits _a _b _c + $ hg up "desc(_a)" + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommits bprimesplit1 bprimesplit2 + created new head + $ hg prune "desc(_b)" -s "desc(bprimesplit1) + desc(bprimesplit2)" --split + 1 changesets pruned + 1 new unstable changesets + $ hg up "desc(_a)" + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommits bsecondsplit1 bsecondsplit2 + created new head + $ hg prune "desc(bprimesplit1)" -s "desc(bsecondsplit2)" + 1 changesets pruned + 1 new unstable changesets + $ hg prune "desc(bprimesplit2)" -s "desc(bsecondsplit1)" + 1 changesets pruned + $ hg log -G + @ 6:59b942dbda14@default(draft) add bsecondsplit2 + | + o 5:8ffdae67d696@default(draft) add bsecondsplit1 + | + | o 2:102002290587@default(draft) add _c + | | + | x 1:37445b16603b@default(draft) add _b + |/ + o 0:135f39f4bd78@default(draft) add _a + + + $ hg evo --all --any --unstable + does not handle split parents yet + $ hg log -G + @ 6:59b942dbda14@default(draft) add bsecondsplit2 + | + o 5:8ffdae67d696@default(draft) add bsecondsplit1 + | + | o 2:102002290587@default(draft) add _c + | | + | x 1:37445b16603b@default(draft) add _b + |/ + o 0:135f39f4bd78@default(draft) add _a + + + + $ cd .. + +=============================================================================== +Test instability resolution for a changeset unstable because its parent +is obsolete with multiple successors on two branches. +Not supported yet +============================================================================== + + $ hg init test6 + $ cd test6 + $ mkcommits _a _b _c + $ hg up "desc(_a)" + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit bprimesplit1 + created new head + $ hg up "desc(_a)" + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit bprimesplit2 + created new head + $ hg prune "desc(_b)" -s "desc(bprimesplit1) + desc(bprimesplit2)" --split + 1 changesets pruned + 1 new unstable changesets + $ hg log -G + @ 4:3c69ea6aa93e@default(draft) add bprimesplit2 + | + | o 3:8b87864bd0f4@default(draft) add bprimesplit1 + |/ + | o 2:102002290587@default(draft) add _c + | | + | x 1:37445b16603b@default(draft) add _b + |/ + o 0:135f39f4bd78@default(draft) add _a + + + $ hg evo --all --any --unstable + does not handle split parents yet + $ hg log -G + @ 4:3c69ea6aa93e@default(draft) add bprimesplit2 + | + | o 3:8b87864bd0f4@default(draft) add bprimesplit1 + |/ + | o 2:102002290587@default(draft) add _c + | | + | x 1:37445b16603b@default(draft) add _b + |/ + o 0:135f39f4bd78@default(draft) add _a + + + + $ cd .. +