--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-topic-flow-reject-untopiced.t Sat Dec 09 06:13:28 2017 +0100
@@ -0,0 +1,171 @@
+Testing the config option for rejecting draft changeset without topic
+The config option is "experimental.topic-mode.server"
+
+ $ . "$TESTDIR/testlib/topic_setup.sh"
+
+Creating a server repo
+
+ $ hg init server
+ $ cd server
+ $ cat <<EOF >>.hg/hgrc
+ > [phases]
+ > publish=False
+ > [experimental]
+ > topic-mode.server = enforce
+ > EOF
+
+ $ hg topic server
+ marked working directory as topic: server
+ $ for ch in a b c; do echo foo > $ch; hg ci -Aqm "Added "$ch; done
+
+ $ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
+ @ 2:a7b96f87a214
+ | Added c server
+ o 1:d6a8197e192a
+ | Added b server
+ o 0:49a3f206c9ae
+ Added a server
+
+ $ cd ..
+
+Creating a client repo
+
+ $ hg clone server client
+ updating to branch default
+ switching to topic server
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd client
+ $ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
+ @ 2:a7b96f87a214
+ | Added c server
+ o 1:d6a8197e192a
+ | Added b server
+ o 0:49a3f206c9ae
+ Added a server
+
+ $ hg topic
+ * server (3 changesets)
+
+Create a changeset without topic
+
+ $ hg topic --clear
+ $ echo foo > d
+ $ hg ci -Aqm "added d"
+
+ $ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
+ @ 3:4e8b0e0237c6
+ | added d
+ o 2:a7b96f87a214
+ | Added c server
+ o 1:d6a8197e192a
+ | Added b server
+ o 0:49a3f206c9ae
+ Added a server
+
+Push a draft changeset without topic
+
+ $ hg push ../server --new-branch
+ pushing to ../server
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ transaction abort!
+ rollback completed
+ abort: rejecting draft changesets: 4e8b0e0237
+ [255]
+
+ $ hg push ../server -f
+ pushing to ../server
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ transaction abort!
+ rollback completed
+ abort: rejecting draft changesets: 4e8b0e0237
+ [255]
+
+Grow the stack with more changesets having topic
+
+ $ hg topic client
+ marked working directory as topic: client
+ $ for ch in e f g; do echo foo > $ch; hg ci -Aqm "Added "$ch; done;
+
+ $ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
+ @ 6:42c4ac86452a
+ | Added g client
+ o 5:3dc456efb491
+ | Added f client
+ o 4:18a516babc60
+ | Added e client
+ o 3:4e8b0e0237c6
+ | added d
+ o 2:a7b96f87a214
+ | Added c server
+ o 1:d6a8197e192a
+ | Added b server
+ o 0:49a3f206c9ae
+ Added a server
+
+Pushing multiple changeset with some having topics and some not
+
+ $ hg push ../server --new-branch
+ pushing to ../server
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 4 changes to 4 files
+ transaction abort!
+ rollback completed
+ abort: rejecting draft changesets: 4e8b0e0237
+ [255]
+
+Testing case when both experimental.topic-mode.server and
+experimental.topic.publish-bare-branch are set
+
+ $ cd ../server
+ $ echo 'topic.publish-bare-branch=True' >> .hg/hgrc
+ $ cd ../client
+ $ hg push ../server --new-branch
+ pushing to ../server
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 4 changes to 4 files
+ transaction abort!
+ rollback completed
+ abort: rejecting draft changesets: 4e8b0e0237
+ [255]
+
+Turning the changeset public and testing push
+
+ $ hg phase -r 3 -p
+ $ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
+ @ 6:42c4ac86452a
+ | Added g client
+ o 5:3dc456efb491
+ | Added f client
+ o 4:18a516babc60
+ | Added e client
+ o 3:4e8b0e0237c6
+ | added d
+ o 2:a7b96f87a214
+ | Added c
+ o 1:d6a8197e192a
+ | Added b
+ o 0:49a3f206c9ae
+ Added a
+
+ $ hg push ../server
+ pushing to ../server
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 4 changes to 4 files
+ active topic 'server' is now empty