tests/test-topic-debugcb.t
branchstable
changeset 3000 bd7e8be29542
parent 2909 9ce092b17530
child 3359 ae6fddf39933
--- /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
+