~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_bugtracker.py

  • Committer: Matthew Revell
  • Date: 2008-03-05 14:11:35 UTC
  • mto: This revision was merged to the branch mainline in revision 3263.
  • Revision ID: matthew.revell@canonical.com-20080305141135-96jf8j24b9crru6v
Added an admin-guide directory to doc/en and outlined headings for the admin guide in index.txt

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
18
from bzrlib import bugtracker, errors, urlutils
19
 
from bzrlib.tests import TestCase, TestCaseWithMemoryTransport
 
19
from bzrlib.tests import TestCaseWithMemoryTransport
20
20
 
21
21
 
22
22
class TestGetBugURL(TestCaseWithMemoryTransport):
41
41
        self.tracker_type = TestGetBugURL.TransientTracker
42
42
        self.tracker_type.log = []
43
43
        bugtracker.tracker_registry.register('transient', self.tracker_type)
44
 
        self.addCleanup(bugtracker.tracker_registry.remove, 'transient')
 
44
        self.addCleanup(lambda:
 
45
                        bugtracker.tracker_registry.remove('transient'))
45
46
 
46
47
    def test_get_bug_url_for_transient_tracker(self):
47
48
        branch = self.make_branch('some_branch')
80
81
        self.assertEqual('http://bugs.debian.org/1234',
81
82
                         tracker.get_bug_url('1234'))
82
83
 
83
 
    def test_gnome_registered(self):
84
 
        branch = self.make_branch('some_branch')
85
 
        tracker = bugtracker.tracker_registry.get_tracker('gnome', branch)
86
 
        self.assertEqual('http://bugzilla.gnome.org/show_bug.cgi?id=1234',
87
 
                         tracker.get_bug_url('1234'))
88
 
 
89
84
    def test_trac_registered(self):
90
85
        """The Trac bug tracker should be registered by default and generate
91
86
        Trac bug page URLs when the appropriate configuration is present.
127
122
 
128
123
class TestUniqueIntegerBugTracker(TestCaseWithMemoryTransport):
129
124
 
130
 
    def test_appends_id_to_base_url(self):
 
125
    def test_joins_id_to_base_url(self):
131
126
        """The URL of a bug is the base URL joined to the identifier."""
132
 
        tracker = bugtracker.UniqueIntegerBugTracker('xxx',
133
 
                'http://bugs.com/foo')
134
 
        self.assertEqual('http://bugs.com/foo1234', tracker.get_bug_url('1234'))
 
127
        tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
 
128
        self.assertEqual('http://bugs.com/1234', tracker.get_bug_url('1234'))
135
129
 
136
130
    def test_returns_tracker_if_abbreviation_matches(self):
137
131
        """The get() method should return an instance of the tracker if the
138
132
        given abbreviation matches the tracker's abbreviated name.
139
133
        """
140
 
        tracker = bugtracker.UniqueIntegerBugTracker('xxx',
141
 
                'http://bugs.com/')
 
134
        tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
142
135
        branch = self.make_branch('some_branch')
143
136
        self.assertIs(tracker, tracker.get('xxx', branch))
144
137
 
146
139
        """The get() method should return None if the given abbreviated name
147
140
        doesn't match the tracker's abbreviation.
148
141
        """
149
 
        tracker = bugtracker.UniqueIntegerBugTracker('xxx',
150
 
                'http://bugs.com/')
 
142
        tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
151
143
        branch = self.make_branch('some_branch')
152
144
        self.assertIs(None, tracker.get('yyy', branch))
153
145
 
155
147
        """A UniqueIntegerBugTracker shouldn't consult the branch for tracker
156
148
        information.
157
149
        """
158
 
        tracker = bugtracker.UniqueIntegerBugTracker('xxx',
159
 
                'http://bugs.com/')
 
150
        tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
160
151
        self.assertIs(tracker, tracker.get('xxx', None))
161
152
        self.assertIs(None, tracker.get('yyy', None))
162
153
 
163
154
    def test_check_bug_id_only_accepts_integers(self):
164
155
        """A UniqueIntegerBugTracker accepts integers as bug IDs."""
165
 
        tracker = bugtracker.UniqueIntegerBugTracker('xxx',
166
 
                'http://bugs.com/')
 
156
        tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
167
157
        tracker.check_bug_id('1234')
168
158
 
169
159
    def test_check_bug_id_doesnt_accept_non_integers(self):
170
160
        """A UniqueIntegerBugTracker rejects non-integers as bug IDs."""
171
 
        tracker = bugtracker.UniqueIntegerBugTracker('xxx',
172
 
                'http://bugs.com/')
 
161
        tracker = bugtracker.UniqueIntegerBugTracker('xxx', 'http://bugs.com')
173
162
        self.assertRaises(
174
163
            errors.MalformedBugIdentifier, tracker.check_bug_id, 'red')
175
164
 
193
182
        """If asked for a valid tag, return a tracker instance that can map bug
194
183
        IDs to <base_url>/<bug_area> + <bug_id>."""
195
184
        bugtracker.tracker_registry.register('some', self.tracker)
196
 
        self.addCleanup(bugtracker.tracker_registry.remove, 'some')
 
185
        self.addCleanup(lambda: bugtracker.tracker_registry.remove('some'))
197
186
 
198
187
        branch = self.make_branch('some_branch')
199
188
        config = branch.get_config()
209
198
        """
210
199
        self.assertRaises(
211
200
            errors.MalformedBugIdentifier, self.tracker.get_bug_url, 'bad')
212
 
 
213
 
 
214
 
class TestPropertyEncoding(TestCase):
215
 
    """Tests for how the bug URLs are encoded as revision properties."""
216
 
 
217
 
    def test_encoding_one(self):
218
 
        self.assertEqual(
219
 
            'http://example.com/bugs/1 fixed',
220
 
            bugtracker.encode_fixes_bug_urls(['http://example.com/bugs/1']))
221
 
 
222
 
    def test_encoding_zero(self):
223
 
        self.assertEqual('', bugtracker.encode_fixes_bug_urls([]))
224
 
 
225
 
    def test_encoding_two(self):
226
 
        self.assertEqual(
227
 
            'http://example.com/bugs/1 fixed\n'
228
 
            'http://example.com/bugs/2 fixed',
229
 
            bugtracker.encode_fixes_bug_urls(
230
 
                ['http://example.com/bugs/1', 'http://example.com/bugs/2']))