--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-topic-stack-data.t Fri Aug 26 14:58:49 2016 +0200
@@ -0,0 +1,237 @@
+Setup
+=====
+
+ $ . "$TESTDIR/testlib"
+
+ $ hg init test-list
+ $ cd test-list
+ $ cat <<EOF >> .hg/hgrc
+ > [phases]
+ > publish=false
+ > EOF
+ $ cat <<EOF >> $HGRCPATH
+ > [experimental]
+ > # disable the new graph style until we drop 3.7 support
+ > graphstyle.missing = |
+ > # turn evolution on
+ > evolution=all
+ > EOF
+
+
+ $ mkcommit() {
+ > echo "$1" > "$1"
+ > hg add "$1"
+ > hg ci -m "add $1"
+ > }
+
+Build some basic graph
+----------------------
+
+ $ for x in base_a base_b base_c base_d base_e ; do
+ > mkcommit $x
+ > done
+
+Add another branch with two heads
+
+ $ hg up 'desc(base_a)'
+ 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+ $ hg branch lake
+ marked working directory as branch lake
+ (branches are permanent and global, did you want a bookmark?)
+ $ mkcommit lake_a
+ $ mkcommit lake_b
+ $ hg up 'desc(lake_a)'
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ mkcommit lake_c
+ created new head
+
+
+Add some topics
+---------------
+
+A simple topic that need rebasing
+
+ $ hg up 'desc(base_c)'
+ 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ hg topic baz
+ $ mkcommit baz_a
+ $ mkcommit baz_b
+
+A simple topic with unstability
+
+ $ hg up 'desc(base_d)'
+ 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ hg topic fuz
+ $ mkcommit fuz_a
+ $ mkcommit fuz_b
+ $ mkcommit fuz_c
+ $ hg up 'desc(fuz_a)'
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ hg commit --amend --message 'fuz1_a'
+
+A topic with multiple heads
+
+ $ hg up 'desc(base_e)'
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ hg topic bar
+ $ mkcommit bar_a
+ $ mkcommit bar_b
+ $ mkcommit bar_c
+ $ hg up 'desc(bar_b)'
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ mkcommit bar_d
+ $ mkcommit bar_e
+ $ hg up 'desc(bar_d)'
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ hg commit --amend --message 'bar1_d'
+
+topic 'foo' on the multi headed branch
+
+ $ hg up 'desc(lake_a)'
+ 1 files updated, 0 files merged, 7 files removed, 0 files unresolved
+ $ hg topic foo
+ $ mkcommit foo_a
+ $ mkcommit foo_b
+
+Summary
+-------
+
+ $ hg summary
+ parent: 21:3e54b49a3113 tip
+ add foo_b
+ branch: lake
+ commit: (clean)
+ update: 2 new changesets (update)
+ phases: 22 draft
+ unstable: 3 changesets
+ topic: foo
+ $ hg log --graph -T '{desc} ({branch}) [{topic}]'
+ @ add foo_b (lake) []
+ |
+ o add foo_a (lake) []
+ |
+ | o bar1_d (default) []
+ | |
+ | | o add bar_e (default) []
+ | | |
+ | | x add bar_d (default) []
+ | |/
+ | | o add bar_c (default) []
+ | |/
+ | o add bar_b (default) []
+ | |
+ | o add bar_a (default) []
+ | |
+ | | o fuz1_a (default) []
+ | | |
+ | | | o add fuz_c (default) []
+ | | | |
+ | | | o add fuz_b (default) []
+ | | | |
+ | | | x add fuz_a (default) []
+ | | |/
+ | | | o add baz_b (default) []
+ | | | |
+ | | | o add baz_a (default) []
+ | | | |
+ +-------o add lake_c (lake) []
+ | | | |
+ +-------o add lake_b (lake) []
+ | | | |
+ o | | | add lake_a (lake) []
+ | | | |
+ | o | | add base_e (default) []
+ | |/ /
+ | o / add base_d (default) []
+ | |/
+ | o add base_c (default) []
+ | |
+ | o add base_b (default) []
+ |/
+ o add base_a (default) []
+
+
+Actual Testing
+==============
+
+basic output
+
+ $ hg topic
+ bar
+ baz
+ * foo
+ fuz
+
+quiet version
+
+ $ hg topic --quiet
+ bar
+ baz
+ foo
+ fuz
+
+verbose
+
+ $ hg topic --verbose
+ bar (on branch: default, 5 changesets, 1 troubled, 2 heads)
+ baz (on branch: default, 2 changesets, 2 behind)
+ * foo (on branch: lake, 2 changesets, ambiguous destination)
+ fuz (on branch: default, 3 changesets, 2 troubled, 1 behind)
+
+json
+
+ $ hg topic -T json
+ [
+ {
+ "active": false,
+ "topic": "bar"
+ },
+ {
+ "active": false,
+ "topic": "baz"
+ },
+ {
+ "active": true,
+ "topic": "foo"
+ },
+ {
+ "active": false,
+ "topic": "fuz"
+ }
+ ]
+
+json --verbose
+
+ $ hg topic -T json --verbose
+ [
+ {
+ "active": false,
+ "branches+": "default",
+ "changesetcount": 5,
+ "headcount": 2,
+ "topic": "bar",
+ "troubledcount": 1
+ },
+ {
+ "active": false,
+ "behindcount": 2,
+ "branches+": "default",
+ "changesetcount": 2,
+ "topic": "baz"
+ },
+ {
+ "active": true,
+ "behinderror": "ambiguous destination",
+ "branches+": "lake",
+ "changesetcount": 2,
+ "topic": "foo"
+ },
+ {
+ "active": false,
+ "behindcount": 1,
+ "branches+": "default",
+ "changesetcount": 3,
+ "topic": "fuz",
+ "troubledcount": 2
+ }
+ ]