bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5387.2.7
by John Arbash Meinel
Merge bzr.dev 5444 to resolve some small text conflicts. |
1 |
# Copyright (C) 2007-2010 Canonical Ltd
|
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
2 |
#
|
3 |
# This program is free software; you can redistribute it and/or modify
|
|
4 |
# it under the terms of the GNU General Public License as published by
|
|
5 |
# the Free Software Foundation; either version 2 of the License, or
|
|
6 |
# (at your option) any later version.
|
|
7 |
#
|
|
8 |
# This program is distributed in the hope that it will be useful,
|
|
9 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11 |
# GNU General Public License for more details.
|
|
12 |
#
|
|
13 |
# You should have received a copy of the GNU General Public License
|
|
14 |
# along with this program; if not, write to the Free Software
|
|
4183.7.1
by Sabin Iacob
update FSF mailing address |
15 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
16 |
|
17 |
||
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
18 |
from .. import bugtracker, urlutils |
6624
by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes') |
19 |
from . import TestCase, TestCaseWithMemoryTransport |
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
20 |
|
21 |
||
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
22 |
class ErrorsTest(TestCaseWithMemoryTransport): |
23 |
||
24 |
def test_unknown_bug_tracker_abbreviation(self): |
|
25 |
"""Test the formatting of UnknownBugTrackerAbbreviation.""" |
|
26 |
branch = self.make_branch('some_branch') |
|
27 |
error = bugtracker.UnknownBugTrackerAbbreviation('xxx', branch) |
|
28 |
self.assertEqual( |
|
29 |
"Cannot find registered bug tracker called xxx on %s" % branch, |
|
30 |
str(error)) |
|
31 |
||
32 |
def test_malformed_bug_identifier(self): |
|
33 |
"""Test the formatting of MalformedBugIdentifier.""" |
|
34 |
error = bugtracker.MalformedBugIdentifier( |
|
35 |
'bogus', 'reason for bogosity') |
|
36 |
self.assertEqual( |
|
37 |
'Did not understand bug identifier bogus: reason for bogosity. '
|
|
38 |
'See "brz help bugs" for more information on this feature.', |
|
39 |
str(error)) |
|
40 |
||
41 |
def test_incorrect_url(self): |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
42 |
err = bugtracker.InvalidBugTrackerURL('foo', 'http://bug.example.com/') |
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
43 |
self.assertEqual( |
44 |
("The URL for bug tracker \"foo\" doesn't contain {id}: " |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
45 |
"http://bug.example.com/"), |
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
46 |
str(err)) |
47 |
||
48 |
||
2376.4.7
by jml at canonical
- Add docstrings to tests. |
49 |
class TestGetBugURL(TestCaseWithMemoryTransport): |
50 |
"""Tests for bugtracker.get_bug_url""" |
|
51 |
||
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
52 |
class TransientTracker(object): |
53 |
"""An transient tracker used for testing.""" |
|
54 |
||
55 |
@classmethod
|
|
56 |
def get(klass, abbreviation, branch): |
|
57 |
klass.log.append(('get', abbreviation, branch)) |
|
58 |
if abbreviation != 'transient': |
|
59 |
return None |
|
60 |
return klass() |
|
61 |
||
62 |
def get_bug_url(self, bug_id): |
|
63 |
self.log.append(('get_bug_url', bug_id)) |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
64 |
return "http://bugs.example.com/%s" % bug_id |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
65 |
|
66 |
def setUp(self): |
|
6552.1.4
by Vincent Ladeuil
Remaining tests matching setup(self) that can be rewritten with super(). |
67 |
super(TestGetBugURL, self).setUp() |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
68 |
self.tracker_type = TestGetBugURL.TransientTracker |
69 |
self.tracker_type.log = [] |
|
70 |
bugtracker.tracker_registry.register('transient', self.tracker_type) |
|
4985.2.1
by Vincent Ladeuil
Deploy addAttrCleanup on the whole test suite. |
71 |
self.addCleanup(bugtracker.tracker_registry.remove, 'transient') |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
72 |
|
73 |
def test_get_bug_url_for_transient_tracker(self): |
|
2376.4.7
by jml at canonical
- Add docstrings to tests. |
74 |
branch = self.make_branch('some_branch') |
6940.3.2
by Jelmer Vernooij
Review comments. |
75 |
self.assertEqual('http://bugs.example.com/1234', |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
76 |
bugtracker.get_bug_url('transient', branch, '1234')) |
2376.4.7
by jml at canonical
- Add docstrings to tests. |
77 |
self.assertEqual( |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
78 |
[('get', 'transient', branch), ('get_bug_url', '1234')], |
79 |
self.tracker_type.log) |
|
80 |
||
81 |
def test_unrecognized_abbreviation_raises_error(self): |
|
82 |
"""If the abbreviation is unrecognized, then raise an error.""" |
|
2376.4.7
by jml at canonical
- Add docstrings to tests. |
83 |
branch = self.make_branch('some_branch') |
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
84 |
self.assertRaises(bugtracker.UnknownBugTrackerAbbreviation, |
2376.4.7
by jml at canonical
- Add docstrings to tests. |
85 |
bugtracker.get_bug_url, 'xxx', branch, '1234') |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
86 |
self.assertEqual([('get', 'xxx', branch)], self.tracker_type.log) |
2376.4.7
by jml at canonical
- Add docstrings to tests. |
87 |
|
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
88 |
|
2376.4.29
by Jonathan Lange
Tests for builtin trackers. |
89 |
class TestBuiltinTrackers(TestCaseWithMemoryTransport): |
90 |
"""Test that the builtin trackers are registered and return sane URLs.""" |
|
91 |
||
92 |
def test_launchpad_registered(self): |
|
93 |
"""The Launchpad bug tracker should be registered by default and |
|
94 |
generate Launchpad bug page URLs.
|
|
95 |
"""
|
|
96 |
branch = self.make_branch('some_branch') |
|
97 |
tracker = bugtracker.tracker_registry.get_tracker('lp', branch) |
|
98 |
self.assertEqual('https://launchpad.net/bugs/1234', |
|
99 |
tracker.get_bug_url('1234')) |
|
100 |
||
101 |
def test_debian_registered(self): |
|
102 |
"""The Debian bug tracker should be registered by default and generate |
|
103 |
bugs.debian.org bug page URLs.
|
|
104 |
"""
|
|
105 |
branch = self.make_branch('some_branch') |
|
106 |
tracker = bugtracker.tracker_registry.get_tracker('deb', branch) |
|
107 |
self.assertEqual('http://bugs.debian.org/1234', |
|
108 |
tracker.get_bug_url('1234')) |
|
109 |
||
3270.5.1
by James Westby
Add gnome to the list of known bugtrackers. |
110 |
def test_gnome_registered(self): |
111 |
branch = self.make_branch('some_branch') |
|
112 |
tracker = bugtracker.tracker_registry.get_tracker('gnome', branch) |
|
113 |
self.assertEqual('http://bugzilla.gnome.org/show_bug.cgi?id=1234', |
|
114 |
tracker.get_bug_url('1234')) |
|
115 |
||
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
116 |
def test_trac_registered(self): |
117 |
"""The Trac bug tracker should be registered by default and generate |
|
118 |
Trac bug page URLs when the appropriate configuration is present.
|
|
119 |
"""
|
|
120 |
branch = self.make_branch('some_branch') |
|
121 |
config = branch.get_config() |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
122 |
config.set_user_option('trac_foo_url', 'http://bugs.example.com/trac') |
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
123 |
tracker = bugtracker.tracker_registry.get_tracker('foo', branch) |
6940.3.2
by Jelmer Vernooij
Review comments. |
124 |
self.assertEqual('http://bugs.example.com/trac/ticket/1234', |
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
125 |
tracker.get_bug_url('1234')) |
126 |
||
127 |
def test_bugzilla_registered(self): |
|
128 |
"""The Bugzilla bug tracker should be registered by default and |
|
129 |
generate Bugzilla bug page URLs when the appropriate configuration is
|
|
130 |
present.
|
|
131 |
"""
|
|
132 |
branch = self.make_branch('some_branch') |
|
133 |
config = branch.get_config() |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
134 |
config.set_user_option('bugzilla_foo_url', 'http://bugs.example.com') |
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
135 |
tracker = bugtracker.tracker_registry.get_tracker('foo', branch) |
6940.3.2
by Jelmer Vernooij
Review comments. |
136 |
self.assertEqual('http://bugs.example.com/show_bug.cgi?id=1234', |
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
137 |
tracker.get_bug_url('1234')) |
138 |
||
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
139 |
def test_github(self): |
140 |
branch = self.make_branch('some_branch') |
|
141 |
tracker = bugtracker.tracker_registry.get_tracker('github', branch) |
|
142 |
self.assertEqual('https://github.com/breezy-team/breezy/issues/1234', |
|
143 |
tracker.get_bug_url('breezy-team/breezy/1234')) |
|
144 |
||
3035.3.1
by Lukáš Lalinský
Generic bug tracker configuration. |
145 |
def test_generic_registered(self): |
146 |
branch = self.make_branch('some_branch') |
|
147 |
config = branch.get_config() |
|
7143.15.2
by Jelmer Vernooij
Run autopep8. |
148 |
config.set_user_option('bugtracker_foo_url', |
149 |
'http://bugs.example.com/{id}/view.html') |
|
3035.3.1
by Lukáš Lalinský
Generic bug tracker configuration. |
150 |
tracker = bugtracker.tracker_registry.get_tracker('foo', branch) |
6940.3.2
by Jelmer Vernooij
Review comments. |
151 |
self.assertEqual('http://bugs.example.com/1234/view.html', |
5409.3.2
by Alexandre Garnier
Add tests for URLParametrizedBugTracker rather than reusing existing tests |
152 |
tracker.get_bug_url('1234')) |
153 |
||
154 |
def test_generic_registered_non_integer(self): |
|
155 |
branch = self.make_branch('some_branch') |
|
156 |
config = branch.get_config() |
|
7143.15.2
by Jelmer Vernooij
Run autopep8. |
157 |
config.set_user_option('bugtracker_foo_url', |
158 |
'http://bugs.example.com/{id}/view.html') |
|
5409.3.2
by Alexandre Garnier
Add tests for URLParametrizedBugTracker rather than reusing existing tests |
159 |
tracker = bugtracker.tracker_registry.get_tracker('foo', branch) |
6940.3.2
by Jelmer Vernooij
Review comments. |
160 |
self.assertEqual('http://bugs.example.com/ABC-1234/view.html', |
5409.3.1
by Alexandre Garnier
Allow using string bug ID with generic bug trackers. |
161 |
tracker.get_bug_url('ABC-1234')) |
3035.3.1
by Lukáš Lalinský
Generic bug tracker configuration. |
162 |
|
3035.3.2
by Lukáš Lalinský
Add tests for InvalidBugTrackerURL. |
163 |
def test_generic_incorrect_url(self): |
164 |
branch = self.make_branch('some_branch') |
|
165 |
config = branch.get_config() |
|
7143.15.2
by Jelmer Vernooij
Run autopep8. |
166 |
config.set_user_option('bugtracker_foo_url', |
167 |
'http://bugs.example.com/view.html') |
|
3035.3.2
by Lukáš Lalinský
Add tests for InvalidBugTrackerURL. |
168 |
tracker = bugtracker.tracker_registry.get_tracker('foo', branch) |
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
169 |
self.assertRaises(bugtracker.InvalidBugTrackerURL, tracker.get_bug_url, |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
170 |
'1234') |
3035.3.1
by Lukáš Lalinský
Generic bug tracker configuration. |
171 |
|
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
172 |
|
173 |
class TestUniqueIntegerBugTracker(TestCaseWithMemoryTransport): |
|
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
174 |
|
3329.1.1
by Ian Clatworthy
Add gnome to list of known bugtrackers (James Westby, Andrew Cowie) |
175 |
def test_appends_id_to_base_url(self): |
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
176 |
"""The URL of a bug is the base URL joined to the identifier.""" |
3270.5.3
by James Westby
No longer add an extra class to accomoadate gnome. |
177 |
tracker = bugtracker.UniqueIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
178 |
'http://bugs.example.com/foo') |
179 |
self.assertEqual('http://bugs.example.com/foo1234', |
|
180 |
tracker.get_bug_url('1234')) |
|
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
181 |
|
2376.4.23
by Jonathan Lange
Change 'tag' to 'abbreviated_tracker_name' |
182 |
def test_returns_tracker_if_abbreviation_matches(self): |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
183 |
"""The get() method should return an instance of the tracker if the |
184 |
given abbreviation matches the tracker's abbreviated name.
|
|
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
185 |
"""
|
3270.5.3
by James Westby
No longer add an extra class to accomoadate gnome. |
186 |
tracker = bugtracker.UniqueIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
187 |
'http://bugs.example.com/') |
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
188 |
branch = self.make_branch('some_branch') |
2376.4.25
by Jonathan Lange
Make singleton bug tracker thing work via instances. |
189 |
self.assertIs(tracker, tracker.get('xxx', branch)) |
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
190 |
|
2376.4.23
by Jonathan Lange
Change 'tag' to 'abbreviated_tracker_name' |
191 |
def test_returns_none_if_abbreviation_doesnt_match(self): |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
192 |
"""The get() method should return None if the given abbreviated name |
193 |
doesn't match the tracker's abbreviation.
|
|
2376.4.22
by Jonathan Lange
Variety of whitespace cleanups, tightening of tests and docstring changes in |
194 |
"""
|
3270.5.3
by James Westby
No longer add an extra class to accomoadate gnome. |
195 |
tracker = bugtracker.UniqueIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
196 |
'http://bugs.example.com/') |
2376.4.22
by Jonathan Lange
Variety of whitespace cleanups, tightening of tests and docstring changes in |
197 |
branch = self.make_branch('some_branch') |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
198 |
self.assertIs(None, tracker.get('yyy', branch)) |
199 |
||
200 |
def test_doesnt_consult_branch(self): |
|
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
201 |
"""A UniqueIntegerBugTracker shouldn't consult the branch for tracker |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
202 |
information.
|
203 |
"""
|
|
3270.5.3
by James Westby
No longer add an extra class to accomoadate gnome. |
204 |
tracker = bugtracker.UniqueIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
205 |
'http://bugs.example.com/') |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
206 |
self.assertIs(tracker, tracker.get('xxx', None)) |
207 |
self.assertIs(None, tracker.get('yyy', None)) |
|
2376.4.22
by Jonathan Lange
Variety of whitespace cleanups, tightening of tests and docstring changes in |
208 |
|
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
209 |
def test_check_bug_id_only_accepts_integers(self): |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
210 |
"""A UniqueIntegerBugTracker accepts integers as bug IDs.""" |
3270.5.3
by James Westby
No longer add an extra class to accomoadate gnome. |
211 |
tracker = bugtracker.UniqueIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
212 |
'http://bugs.example.com/') |
2376.4.28
by Jonathan Lange
Focus the tests better and clean up some dodgy bits in UnknownBugTrackerAbbreviation |
213 |
tracker.check_bug_id('1234') |
214 |
||
215 |
def test_check_bug_id_doesnt_accept_non_integers(self): |
|
216 |
"""A UniqueIntegerBugTracker rejects non-integers as bug IDs.""" |
|
3270.5.3
by James Westby
No longer add an extra class to accomoadate gnome. |
217 |
tracker = bugtracker.UniqueIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
218 |
'http://bugs.example.com/') |
2376.4.26
by Jonathan Lange
Tests for MalformedBugIdentifier and new error UnknownBugTrackerAbbreviation. |
219 |
self.assertRaises( |
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
220 |
bugtracker.MalformedBugIdentifier, tracker.check_bug_id, 'red') |
2376.4.20
by Jonathan Lange
Direct tests for UniqueBugTracker and UniqueIntegerBugTracker |
221 |
|
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
222 |
|
223 |
class TestProjectIntegerBugTracker(TestCaseWithMemoryTransport): |
|
224 |
||
225 |
def test_appends_id_to_base_url(self): |
|
226 |
"""The URL of a bug is the base URL joined to the identifier.""" |
|
227 |
tracker = bugtracker.ProjectIntegerBugTracker('xxx', |
|
7143.15.2
by Jelmer Vernooij
Run autopep8. |
228 |
'http://bugs.example.com/{project}/{id}') |
229 |
self.assertEqual('http://bugs.example.com/foo/1234', |
|
230 |
tracker.get_bug_url('foo/1234')) |
|
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
231 |
|
232 |
def test_returns_tracker_if_abbreviation_matches(self): |
|
233 |
"""The get() method should return an instance of the tracker if the |
|
234 |
given abbreviation matches the tracker's abbreviated name.
|
|
235 |
"""
|
|
236 |
tracker = bugtracker.ProjectIntegerBugTracker('xxx', |
|
7143.15.2
by Jelmer Vernooij
Run autopep8. |
237 |
'http://bugs.example.com/{project}/{id}') |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
238 |
branch = self.make_branch('some_branch') |
239 |
self.assertIs(tracker, tracker.get('xxx', branch)) |
|
240 |
||
241 |
def test_returns_none_if_abbreviation_doesnt_match(self): |
|
242 |
"""The get() method should return None if the given abbreviated name |
|
243 |
doesn't match the tracker's abbreviation.
|
|
244 |
"""
|
|
245 |
tracker = bugtracker.ProjectIntegerBugTracker('xxx', |
|
7143.15.2
by Jelmer Vernooij
Run autopep8. |
246 |
'http://bugs.example.com/{project}/{id}') |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
247 |
branch = self.make_branch('some_branch') |
248 |
self.assertIs(None, tracker.get('yyy', branch)) |
|
249 |
||
250 |
def test_doesnt_consult_branch(self): |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
251 |
"""Shouldn't consult the branch for tracker information. |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
252 |
"""
|
253 |
tracker = bugtracker.ProjectIntegerBugTracker('xxx', |
|
7143.15.2
by Jelmer Vernooij
Run autopep8. |
254 |
'http://bugs.example.com/{project}/{id}') |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
255 |
self.assertIs(tracker, tracker.get('xxx', None)) |
256 |
self.assertIs(None, tracker.get('yyy', None)) |
|
257 |
||
258 |
def test_check_bug_id_only_accepts_project_integers(self): |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
259 |
"""Accepts integers as bug IDs.""" |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
260 |
tracker = bugtracker.ProjectIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
261 |
'http://bugs.example.com/{project}/{id}') |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
262 |
tracker.check_bug_id('project/1234') |
263 |
||
264 |
def test_check_bug_id_doesnt_accept_non_project_integers(self): |
|
6940.3.2
by Jelmer Vernooij
Review comments. |
265 |
"""Rejects non-integers as bug IDs.""" |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
266 |
tracker = bugtracker.ProjectIntegerBugTracker('xxx', |
7143.15.2
by Jelmer Vernooij
Run autopep8. |
267 |
'http://bugs.example.com/{project}/{id}') |
6940.3.1
by Jelmer Vernooij
Add a 'github' bugtracker. |
268 |
self.assertRaises( |
269 |
bugtracker.MalformedBugIdentifier, tracker.check_bug_id, 'red') |
|
270 |
self.assertRaises( |
|
271 |
bugtracker.MalformedBugIdentifier, tracker.check_bug_id, '1234') |
|
272 |
||
273 |
||
5409.3.2
by Alexandre Garnier
Add tests for URLParametrizedBugTracker rather than reusing existing tests |
274 |
class TestURLParametrizedBugTracker(TestCaseWithMemoryTransport): |
275 |
"""Tests for URLParametrizedBugTracker.""" |
|
2376.4.22
by Jonathan Lange
Variety of whitespace cleanups, tightening of tests and docstring changes in |
276 |
|
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
277 |
def setUp(self): |
6552.1.4
by Vincent Ladeuil
Remaining tests matching setup(self) that can be rewritten with super(). |
278 |
super(TestURLParametrizedBugTracker, self).setUp() |
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
279 |
self.url = 'http://twistedmatrix.com/trac' |
5409.3.2
by Alexandre Garnier
Add tests for URLParametrizedBugTracker rather than reusing existing tests |
280 |
self.tracker = bugtracker.URLParametrizedBugTracker('some', 'ticket/') |
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
281 |
|
282 |
def test_get_with_unsupported_tag(self): |
|
2376.4.7
by jml at canonical
- Add docstrings to tests. |
283 |
"""If asked for an unrecognized or unconfigured tag, return None.""" |
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
284 |
branch = self.make_branch('some_branch') |
2376.4.42
by Jonathan Lange
Parametrize URLParametrizedIntegerBugTracker even further so we don't need to |
285 |
self.assertEqual(None, self.tracker.get('lp', branch)) |
286 |
self.assertEqual(None, self.tracker.get('twisted', branch)) |
|
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
287 |
|
288 |
def test_get_with_supported_tag(self): |
|
2376.4.42
by Jonathan Lange
Parametrize URLParametrizedIntegerBugTracker even further so we don't need to |
289 |
"""If asked for a valid tag, return a tracker instance that can map bug |
290 |
IDs to <base_url>/<bug_area> + <bug_id>."""
|
|
291 |
bugtracker.tracker_registry.register('some', self.tracker) |
|
4985.2.1
by Vincent Ladeuil
Deploy addAttrCleanup on the whole test suite. |
292 |
self.addCleanup(bugtracker.tracker_registry.remove, 'some') |
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
293 |
|
2376.4.4
by jml at canonical
Beginnings of generic bug-tracker plugin system. |
294 |
branch = self.make_branch('some_branch') |
295 |
config = branch.get_config() |
|
2376.4.40
by Jonathan Lange
Redo the hierarchy of bug trackers to reduce duplication. |
296 |
config.set_user_option('some_twisted_url', self.url) |
2376.4.42
by Jonathan Lange
Parametrize URLParametrizedIntegerBugTracker even further so we don't need to |
297 |
tracker = self.tracker.get('twisted', branch) |
298 |
self.assertEqual( |
|
299 |
urlutils.join(self.url, 'ticket/') + '1234', |
|
300 |
tracker.get_bug_url('1234')) |
|
2376.4.7
by jml at canonical
- Add docstrings to tests. |
301 |
|
5409.3.2
by Alexandre Garnier
Add tests for URLParametrizedBugTracker rather than reusing existing tests |
302 |
def test_get_bug_url_for_integer_id(self): |
303 |
self.tracker.check_bug_id('1234') |
|
304 |
||
305 |
def test_get_bug_url_for_non_integer_id(self): |
|
306 |
self.tracker.check_bug_id('ABC-1234') |
|
307 |
||
308 |
||
309 |
class TestURLParametrizedIntegerBugTracker(TestCaseWithMemoryTransport): |
|
310 |
"""Tests for URLParametrizedIntegerBugTracker.""" |
|
311 |
||
312 |
def setUp(self): |
|
6552.1.4
by Vincent Ladeuil
Remaining tests matching setup(self) that can be rewritten with super(). |
313 |
super(TestURLParametrizedIntegerBugTracker, self).setUp() |
5409.3.2
by Alexandre Garnier
Add tests for URLParametrizedBugTracker rather than reusing existing tests |
314 |
self.url = 'http://twistedmatrix.com/trac' |
315 |
self.tracker = bugtracker.URLParametrizedIntegerBugTracker('some', |
|
316 |
'ticket/') |
|
317 |
||
2376.4.30
by Jonathan Lange
Support for Bugzilla bug trackers. |
318 |
def test_get_bug_url_for_bad_bug(self): |
319 |
"""When given a bug identifier that is invalid for Trac, get_bug_url |
|
320 |
should raise an error.
|
|
321 |
"""
|
|
322 |
self.assertRaises( |
|
6729.4.1
by Jelmer Vernooij
Move bugtracker errors to breezy.bugtracker. |
323 |
bugtracker.MalformedBugIdentifier, self.tracker.get_bug_url, 'bad') |
4119.4.2
by Jonathan Lange
Some refactoring, some unit tests. |
324 |
|
325 |
||
326 |
class TestPropertyEncoding(TestCase): |
|
327 |
"""Tests for how the bug URLs are encoded as revision properties.""" |
|
328 |
||
329 |
def test_encoding_one(self): |
|
330 |
self.assertEqual( |
|
331 |
'http://example.com/bugs/1 fixed', |
|
7131.10.1
by Jelmer Vernooij
Add --bugs option to 'bzr commit'. |
332 |
bugtracker.encode_fixes_bug_urls( |
333 |
[('http://example.com/bugs/1', 'fixed')])) |
|
4119.4.2
by Jonathan Lange
Some refactoring, some unit tests. |
334 |
|
335 |
def test_encoding_zero(self): |
|
336 |
self.assertEqual('', bugtracker.encode_fixes_bug_urls([])) |
|
337 |
||
338 |
def test_encoding_two(self): |
|
339 |
self.assertEqual( |
|
340 |
'http://example.com/bugs/1 fixed\n' |
|
7131.10.1
by Jelmer Vernooij
Add --bugs option to 'bzr commit'. |
341 |
'http://example.com/bugs/2 related', |
4119.4.2
by Jonathan Lange
Some refactoring, some unit tests. |
342 |
bugtracker.encode_fixes_bug_urls( |
7131.10.1
by Jelmer Vernooij
Add --bugs option to 'bzr commit'. |
343 |
[('http://example.com/bugs/1', 'fixed'), |
344 |
('http://example.com/bugs/2', 'related')])) |
|
7182.1.1
by Jelmer Vernooij
Raise on invalid bug URL. |
345 |
|
346 |
def test_encoding_with_space(self): |
|
347 |
self.assertRaises( |
|
348 |
bugtracker.InvalidBugUrl, |
|
349 |
bugtracker.encode_fixes_bug_urls, |
|
7182.1.2
by Jelmer Vernooij
Move decoding of bug properties. |
350 |
[('http://example.com/bugs/ 1', 'fixed')]) |
351 |
||
352 |
||
353 |
class TestPropertyDecoding(TestCase): |
|
354 |
"""Tests for parsing bug revision properties.""" |
|
355 |
||
356 |
def test_decoding_one(self): |
|
357 |
self.assertEqual( |
|
358 |
[('http://example.com/bugs/1', 'fixed')], |
|
359 |
list(bugtracker.decode_bug_urls( |
|
360 |
'http://example.com/bugs/1 fixed'))) |
|
361 |
||
362 |
def test_decoding_zero(self): |
|
363 |
self.assertEqual([], list(bugtracker.decode_bug_urls(''))) |
|
364 |
||
365 |
def test_decoding_two(self): |
|
366 |
self.assertEqual( |
|
367 |
[('http://example.com/bugs/1', 'fixed'), |
|
368 |
('http://example.com/bugs/2', 'related')], |
|
369 |
list(bugtracker.decode_bug_urls( |
|
370 |
'http://example.com/bugs/1 fixed\n' |
|
371 |
'http://example.com/bugs/2 related'))) |
|
372 |
||
373 |
def test_decoding_invalid(self): |
|
374 |
self.assertRaises( |
|
375 |
bugtracker.InvalidLineInBugsProperty, |
|
376 |
list, |
|
377 |
bugtracker.decode_bug_urls('http://example.com/bugs/ 1 fixed\n')) |