diff tests/test-topic-flow-reject-untopiced.t @ 3235:8a772f0c54d9

topics: add a config to reject draft changeset without topic on a server This patch adds a new config option experimental.topic-mode.server which if sets to True, the server won't accept any draft changeset without topic on it. In case both `experimental.topic-mode.server` and `experimental.topic.publish-bare-branch` are set to True, the enforce-topic one is respected. Tests are added for it. The CHANGELOG file is also updated mentioning about the config option.
author Pulkit Goyal <7895pulkit@gmail.com>
date Sat, 09 Dec 2017 06:13:28 +0100
parents
children e642bad8174a
line wrap: on
line diff
--- /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