diff -r 0d16c89aa185 -r bd7e8be29542 tests/test-topic-debugcb.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-topic-debugcb.t Wed Sep 27 00:54:28 2017 +0200 @@ -0,0 +1,316 @@ +================================================== +Test for `hg debugconvertbookmark` added by topics +================================================== + + $ . "$TESTDIR/testlib/topic_setup.sh" + + $ cat << EOF >> $HGRCPATH + > drawdag=$RUNTESTDIR/drawdag.py + > [ui] + > logtemplate = [{rev}:{node|short}] {desc|firstline}\n\ + > {if(bookmarks, " bookmark: {join(bookmarks,"\n bookmark:")}\n")}\ + > {if(topics, " topic: {topics}\n")} + > EOF + +Setting up the things +--------------------- + + $ hg init repo + $ cd repo + $ echo "Hello" > root + $ hg commit -Aqm "root" + $ hg phase --public . + $ echo "Hello" > a + $ hg commit -Aqm "First commit" + $ echo "Hello" > b + $ hg commit -Aqm "Second commit" + $ hg bookmark "hellos" + $ hg up 0 -q + $ echo "Fix 1" > l + $ hg commit -Aqm "Fixing first" + $ echo "Fix 2" > m + $ hg commit -Aqm "Fixing second" + $ hg bookmark "secondfix" + + $ hg log -G + @ [4:ec0e17135a94] Fixing second + | bookmark: secondfix + o [3:e05947b88d69] Fixing first + | + | o [2:f53d1144f925] Second commit + | | bookmark: hellos + | o [1:df1fd5e18154] First commit + |/ + o [0:249055fcca50] root + + +Generic tests +============= + +Help for the command +-------------------- + + $ hg help debugconvertbookmark + hg debugcb [-b BOOKMARK] [--all] + + aliases: debugconvertbookmark + + Converts a bookmark to a topic with the same name. + + options: + + -b --bookmark VALUE bookmark to convert to topic + --all convert all bookmarks to topics + + (some details hidden, use --verbose to show complete help) + +Running without any argument +---------------------------- + + $ hg debugconvertbookmark + abort: you must specify either '--all' or '-b' + [255] + +Changing a particular bookmark to topic +======================================= + + $ hg debugconvertbookmark -b hellos + changed topic to "hellos" on 2 revisions + $ hg log -G + o [6:98ae7930f6ed] Second commit + | topic: hellos + o [5:ff69f6ee4618] First commit + | topic: hellos + | @ [4:ec0e17135a94] Fixing second + | | bookmark: secondfix + | o [3:e05947b88d69] Fixing first + |/ + o [0:249055fcca50] root + + +Changing all bookmarks to topic +=============================== + +Simple test +----------- + + $ hg debugconvertbookmark --all + switching to topic secondfix + changed topic to "secondfix" on 2 revisions + $ hg log -G + @ [8:5f0f9cc1979a] Fixing second + | topic: secondfix + o [7:f8ecbf3b10be] Fixing first + | topic: secondfix + | o [6:98ae7930f6ed] Second commit + | | topic: hellos + | o [5:ff69f6ee4618] First commit + |/ topic: hellos + o [0:249055fcca50] root + + +Trying with multiple bookmarks on a single changeset +---------------------------------------------------- + + $ echo "multiple bookmarks" >> m + $ hg commit -Aqm "Trying multiple bookmarks" + $ hg bookmark book1 + $ hg bookmark book2 + $ hg log -G + @ [9:4ad3e7d421d4] Trying multiple bookmarks + | bookmark: book1 + | bookmark:book2 + | topic: secondfix + o [8:5f0f9cc1979a] Fixing second + | topic: secondfix + o [7:f8ecbf3b10be] Fixing first + | topic: secondfix + | o [6:98ae7930f6ed] Second commit + | | topic: hellos + | o [5:ff69f6ee4618] First commit + |/ topic: hellos + o [0:249055fcca50] root + + $ hg debugconvertbookmark --all + skipping '9' as it has multiple bookmarks on it + $ hg log -G + @ [9:4ad3e7d421d4] Trying multiple bookmarks + | bookmark: book1 + | bookmark:book2 + | topic: secondfix + o [8:5f0f9cc1979a] Fixing second + | topic: secondfix + o [7:f8ecbf3b10be] Fixing first + | topic: secondfix + | o [6:98ae7930f6ed] Second commit + | | topic: hellos + | o [5:ff69f6ee4618] First commit + |/ topic: hellos + o [0:249055fcca50] root + + +Two bookmarks on two different topological branches +--------------------------------------------------- + + $ cd .. + $ rm -rf repo + $ hg init setup1 + $ cd setup1 + $ echo "Hello" > root + $ hg commit -Aqm "root" + $ hg phase --public . + $ echo "Hello" > A + $ hg commit -Aqm "A" + $ echo "Hello" > B + $ hg commit -Aqm "B" + $ echo "Hello" > C + $ hg commit -Aqm "C" + $ echo "Hello" > D + $ hg commit -Aqm "D" + $ hg up 'desc(B)' + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ echo "Hello" > E + $ hg commit -Aqm "E" + $ echo "Hello" > F + $ hg commit -Aqm "F" + $ hg bookmark -r 'desc(D)' bar + $ hg bookmark -r 'desc(F)' foo + + $ hg log -G + @ [6:32f4660df717] F + | bookmark: foo + o [5:d4608d9df75e] E + | + | o [4:4963af405f62] D + | | bookmark: bar + | o [3:ac05e0d05d00] C + |/ + o [2:10f317d09e78] B + | + o [1:e34122c9a2bf] A + | + o [0:249055fcca50] root + + $ hg debugconvertbookmark --all + changed topic to "bar" on 2 revisions + switching to topic foo + changed topic to "foo" on 2 revisions + $ hg log -G + @ [10:f0b5f2a5f31a] F + | topic: foo + o [9:7affa1350ff0] E + | topic: foo + | o [8:a1bb64d88f0e] D + | | topic: bar + | o [7:71827f564e9e] C + |/ topic: bar + o [2:10f317d09e78] B + | + o [1:e34122c9a2bf] A + | + o [0:249055fcca50] root + + +Two bookmarks on top of each other +---------------------------------- + + $ cd .. + $ rm -rf setup1 + $ hg init setup2 + $ cd setup2 + $ echo "Hello" > root + $ hg commit -Aqm "root" + $ hg phase --public . + $ echo "Hello" > A + $ hg commit -Aqm "A" + $ hg phase --public . + $ echo "Hello" > B + $ hg commit -Aqm "B" + $ echo "Hello" > C + $ hg commit -Aqm "C" + $ hg bookmark -r . bar + $ echo "Hello" > D + $ hg commit -Aqm "D" + $ echo "Hello" > E + $ hg commit -Aqm "E" + $ hg bookmark -r . foo + + $ hg log -G + @ [5:c633aa1ad270] E + | bookmark: foo + o [4:4963af405f62] D + | + o [3:ac05e0d05d00] C + | bookmark: bar + o [2:10f317d09e78] B + | + o [1:e34122c9a2bf] A + | + o [0:249055fcca50] root + + +XXX: this should avoid create orphan changesets. + + $ hg debugconvertbookmark --all + changed topic to "bar" on 2 revisions + switching to topic foo + changed topic to "foo" on 2 revisions + + $ hg log -G + @ [9:b14d13efcfa7] E + | topic: foo + o [8:c89ca6e70978] D + | topic: foo + | o [7:a3ea0dfe6a10] C + | | topic: bar + | o [6:db1bc6aab480] B + | | topic: bar + x | [3:ac05e0d05d00] C + | | + x | [2:10f317d09e78] B + |/ + o [1:e34122c9a2bf] A + | + o [0:249055fcca50] root + + +Check that phase are properly take in account +--------------------------------------------- + +(we reuse above test, taking advantage of a small bug regarding stacked bookmarks. we can fuse the two tests once that bug is fixed) + + $ cd .. + $ hg init setup-phases + $ cd setup-phases + $ echo "Hello" > root + $ hg commit -Aqm "root" + $ hg phase --public . + $ echo "Hello" > A + $ hg commit -Aqm "A" + $ echo "Hello" > B + $ hg commit -Aqm "B" + $ echo "Hello" > C + $ hg commit -Aqm "C" + $ hg bookmark -r . bar + $ hg log -G + @ [3:ac05e0d05d00] C + | bookmark: bar + o [2:10f317d09e78] B + | + o [1:e34122c9a2bf] A + | + o [0:249055fcca50] root + + + $ hg debugconvertbookmark --all + switching to topic bar + changed topic to "bar" on 3 revisions + $ hg log -G + @ [6:863c43a7951c] C + | topic: bar + o [5:ac7f12ac947f] B + | topic: bar + o [4:fc82c8c14b4c] A + | topic: bar + o [0:249055fcca50] root +