tests/test-bugzilla.t
changeset 28950 9e1c9f016b72
child 29102 22c53b3a390d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-bugzilla.t	Mon Apr 04 22:48:34 2016 +0900
@@ -0,0 +1,97 @@
+mock bugzilla driver for testing template output:
+
+  $ cat <<EOF > bzmock.py
+  > from __future__ import absolute_import
+  > from mercurial import extensions
+  > 
+  > def extsetup(ui):
+  >     bugzilla = extensions.find('bugzilla')
+  >     class bzmock(bugzilla.bzaccess):
+  >         def __init__(self, ui):
+  >             super(bzmock, self).__init__(ui)
+  >             self._logfile = ui.config('bugzilla', 'mocklog')
+  >         def updatebug(self, bugid, newstate, text, committer):
+  >             with open(self._logfile, 'a') as f:
+  >                 f.write('update bugid=%r, newstate=%r, committer=%r\n'
+  >                         % (bugid, newstate, committer))
+  >                 f.write('----\n' + text + '\n----\n')
+  >         def notify(self, bugs, committer):
+  >             with open(self._logfile, 'a') as f:
+  >                 f.write('notify bugs=%r, committer=%r\n'
+  >                         % (bugs, committer))
+  >     bugzilla.bugzilla._versions['mock'] = bzmock
+  > EOF
+
+set up mock repository:
+
+  $ hg init mockremote
+  $ cat <<EOF > mockremote/.hg/hgrc
+  > [extensions]
+  > bugzilla =
+  > bzmock = $TESTTMP/bzmock.py
+  > 
+  > [bugzilla]
+  > version = mock
+  > mocklog = $TESTTMP/bzmock.log
+  > 
+  > [hooks]
+  > incoming.bugzilla = python:hgext.bugzilla.hook
+  > 
+  > [web]
+  > baseurl=http://example.org/hg
+  > 
+  > %include $TESTTMP/bzstyle.hgrc
+  > EOF
+
+  $ hg clone -q mockremote mocklocal
+
+push with default template:
+
+  $ echo '[bugzilla]' > bzstyle.hgrc
+  $ echo foo > mocklocal/foo
+  $ hg ci -R mocklocal -Aqm 'Fixes bug 123'
+  $ hg -R mocklocal push -q
+  $ cat bzmock.log && rm bzmock.log
+  update bugid=123, newstate={}, committer='test'
+  ----
+  changeset 7875a8342c6f in repo $TESTTMP/mockremote refers to bug 123.
+  details:
+  	Fixes bug 123
+  ----
+  notify bugs={123: {}}, committer='test'
+
+push with style:
+
+  $ cat <<EOF > bzstyle.map
+  > changeset = "{node|short} refers to bug {bug}."
+  > EOF
+  $ echo "style = $TESTTMP/bzstyle.map" >> bzstyle.hgrc
+  $ echo foo >> mocklocal/foo
+  $ hg ci -R mocklocal -qm 'Fixes bug 456'
+  $ hg -R mocklocal push -q
+  $ cat bzmock.log && rm bzmock.log
+  update bugid=456, newstate={}, committer='test'
+  ----
+  2808b172464b refers to bug 456.
+  ----
+  notify bugs={456: {}}, committer='test'
+
+push with template (overrides style):
+
+  $ cat <<EOF >> bzstyle.hgrc
+  > template = Changeset {node|short} in {root|basename}.
+  >            {hgweb}/rev/{node|short}\n
+  >            {desc}
+  > EOF
+  $ echo foo >> mocklocal/foo
+  $ hg ci -R mocklocal -qm 'Fixes bug 789'
+  $ hg -R mocklocal push -q
+  $ cat bzmock.log && rm bzmock.log
+  update bugid=789, newstate={}, committer='test'
+  ----
+  Changeset a770f3e409f2 in mockremote.
+  http://example.org/hg/rev/a770f3e409f2
+  
+  Fixes bug 789
+  ----
+  notify bugs={789: {}}, committer='test'