--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-topic-debugcb.t Fri Sep 01 18:02:50 2017 +0200
@@ -0,0 +1,132 @@
+Test for `hg debugconvertbookmark` added by topics
+==================================================
+
+ $ . "$TESTDIR/testlib/topic_setup.sh"
+
+ $ cat << EOF >> $HGRCPATH
+ > [ui]
+ > logtemplate = [{rev}:{node|short}] {desc|firstline}\n\
+ > {if(bookmarks, " bookmark: {join(bookmarks,"\n bookmark:")}\n")}\
+ > {if(topics, " topic: {topics}\n")}
+ > EOF
+
+ $ hg init repo
+ $ cd repo
+ $ 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
+ @ [3:b985e4fea4a4] Fixing second
+ | bookmark: secondfix
+ o [2:8e79b09248c2] Fixing first
+ |
+ | o [1:50634233706a] Second commit
+ |/ bookmark: hellos
+ o [0:3caf92e45cfb] First commit
+
+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 1 revisions
+ $ hg log -G
+ o [4:ca8825a7eb18] Second commit
+ | topic: hellos
+ | @ [3:b985e4fea4a4] Fixing second
+ | | bookmark: secondfix
+ | o [2:8e79b09248c2] Fixing first
+ |/
+ o [0:3caf92e45cfb] First commit
+
+Changing all bookmarks to topic
+===============================
+
+ $ hg debugconvertbookmark --all
+ switching to topic secondfix
+ changed topic to "secondfix" on 2 revisions
+ $ hg log -G
+ @ [6:6efc0524f97a] Fixing second
+ | topic: secondfix
+ o [5:0a4244c62a16] Fixing first
+ | topic: secondfix
+ | o [4:ca8825a7eb18] Second commit
+ |/ topic: hellos
+ o [0:3caf92e45cfb] First commit
+
+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
+ @ [7:7c46b4bbdda3] Trying multiple bookmarks
+ | bookmark: book1
+ | bookmark:book2
+ | topic: secondfix
+ o [6:6efc0524f97a] Fixing second
+ | topic: secondfix
+ o [5:0a4244c62a16] Fixing first
+ | topic: secondfix
+ | o [4:ca8825a7eb18] Second commit
+ |/ topic: hellos
+ o [0:3caf92e45cfb] First commit
+
+XXX: When we have multiple bookmarks on the same changeset, we should skip that
+and do nothing. This should be fixed.
+
+ $ hg debugconvertbookmark --all
+ switching to topic book1
+ changed topic to "book1" on 3 revisions
+ changed topic to "book2" on 3 revisions
+ $ hg log -G
+ o [13:f979f772bd7d] Trying multiple bookmarks
+ | topic: book2
+ o [12:2397fdab7b79] Fixing second
+ | topic: book2
+ o [11:0dd194861ea1] Fixing first
+ | topic: book2
+ | @ [10:e738ed1df4b2] Trying multiple bookmarks
+ | | topic: book1
+ | o [9:4198fce21412] Fixing second
+ | | topic: book1
+ | o [8:221a9ddef504] Fixing first
+ |/ topic: book1
+ | o [4:ca8825a7eb18] Second commit
+ |/ topic: hellos
+ o [0:3caf92e45cfb] First commit
+