81
81
self.assertEqual('http://bugs.debian.org/1234',
82
82
tracker.get_bug_url('1234'))
84
def test_gnome_registered(self):
85
branch = self.make_branch('some_branch')
86
tracker = bugtracker.tracker_registry.get_tracker('gnome', branch)
87
self.assertEqual('http://bugzilla.gnome.org/show_bug.cgi?id=1234',
88
tracker.get_bug_url('1234'))
90
84
def test_trac_registered(self):
91
85
"""The Trac bug tracker should be registered by default and generate
92
86
Trac bug page URLs when the appropriate configuration is present.
110
104
self.assertEqual('http://bugs.com/show_bug.cgi?id=1234',
111
105
tracker.get_bug_url('1234'))
113
def test_generic_registered(self):
114
branch = self.make_branch('some_branch')
115
config = branch.get_config()
116
config.set_user_option('bugtracker_foo_url', 'http://bugs.com/{id}/view.html')
117
tracker = bugtracker.tracker_registry.get_tracker('foo', branch)
118
self.assertEqual('http://bugs.com/1234/view.html',
119
tracker.get_bug_url('1234'))
121
def test_generic_incorrect_url(self):
122
branch = self.make_branch('some_branch')
123
config = branch.get_config()
124
config.set_user_option('bugtracker_foo_url', 'http://bugs.com/view.html')
125
tracker = bugtracker.tracker_registry.get_tracker('foo', branch)
126
self.assertRaises(errors.InvalidBugTrackerURL, tracker.get_bug_url, '1234')
129
108
class TestUniqueIntegerBugTracker(TestCaseWithMemoryTransport):
131
def test_appends_id_to_base_url(self):
110
def test_joins_id_to_base_url(self):
132
111
"""The URL of a bug is the base URL joined to the identifier."""
133
tracker = bugtracker.UniqueIntegerBugTracker('xxx',
134
'http://bugs.com/foo')
135
self.assertEqual('http://bugs.com/foo1234', tracker.get_bug_url('1234'))
112
tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
113
self.assertEqual('http://bugs.com/1234', tracker.get_bug_url('1234'))
137
115
def test_returns_tracker_if_abbreviation_matches(self):
138
116
"""The get() method should return an instance of the tracker if the
139
117
given abbreviation matches the tracker's abbreviated name.
141
tracker = bugtracker.UniqueIntegerBugTracker('xxx',
119
tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
143
120
branch = self.make_branch('some_branch')
144
121
self.assertIs(tracker, tracker.get('xxx', branch))
147
124
"""The get() method should return None if the given abbreviated name
148
125
doesn't match the tracker's abbreviation.
150
tracker = bugtracker.UniqueIntegerBugTracker('xxx',
127
tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
152
128
branch = self.make_branch('some_branch')
153
129
self.assertIs(None, tracker.get('yyy', branch))
156
132
"""A UniqueIntegerBugTracker shouldn't consult the branch for tracker
159
tracker = bugtracker.UniqueIntegerBugTracker('xxx',
135
tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
161
136
self.assertIs(tracker, tracker.get('xxx', None))
162
137
self.assertIs(None, tracker.get('yyy', None))
164
139
def test_check_bug_id_only_accepts_integers(self):
165
140
"""A UniqueIntegerBugTracker accepts integers as bug IDs."""
166
tracker = bugtracker.UniqueIntegerBugTracker('xxx',
141
tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
168
142
tracker.check_bug_id('1234')
170
144
def test_check_bug_id_doesnt_accept_non_integers(self):
171
145
"""A UniqueIntegerBugTracker rejects non-integers as bug IDs."""
172
tracker = bugtracker.UniqueIntegerBugTracker('xxx',
146
tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
174
147
self.assertRaises(
175
148
errors.MalformedBugIdentifier, tracker.check_bug_id, 'red')