~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_revisionnamespaces.py

  • Committer: Alexander Belchenko
  • Date: 2007-01-30 23:05:35 UTC
  • mto: This revision was merged to the branch mainline in revision 2259.
  • Revision ID: bialix@ukr.net-20070130230535-kx1rd478rtigyc3v
standalone installer: win98 support

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2004, 2005, 2006, 2007 Canonical Ltd
 
1
# Copyright (C) 2004, 2005, 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
19
19
import time
20
20
 
21
21
from bzrlib import (
22
 
    branch,
23
 
    bzrdir,
24
22
    errors,
25
 
    repository,
26
23
    )
 
24
from bzrlib.builtins import merge
27
25
from bzrlib.tests import TestCase, TestCaseWithTransport
28
 
from bzrlib.revisionspec import (
29
 
    RevisionSpec,
30
 
    RevisionSpec_revno,
31
 
    RevisionSpec_tag,
32
 
    )
 
26
from bzrlib.revisionspec import RevisionSpec, RevisionSpec_revno
33
27
 
34
28
 
35
29
def spec_in_history(spec, branch):
66
60
    def assertInHistoryIs(self, exp_revno, exp_revision_id, revision_spec):
67
61
        rev_info = self.get_in_history(revision_spec)
68
62
        self.assertEqual(exp_revno, rev_info.revno,
69
 
                         'Revision spec: %r returned wrong revno: %r != %r'
 
63
                         'Revision spec: %s returned wrong revno: %s != %s'
70
64
                         % (revision_spec, exp_revno, rev_info.revno))
71
65
        self.assertEqual(exp_revision_id, rev_info.rev_id,
72
 
                         'Revision spec: %r returned wrong revision id:'
73
 
                         ' %r != %r'
 
66
                         'Revision spec: %s returned wrong revision id:'
 
67
                         ' %s != %s'
74
68
                         % (revision_spec, exp_revision_id, rev_info.rev_id))
75
69
 
76
70
    def assertInvalid(self, revision_spec, extra=''):
116
110
class TestRevisionSpec_revno(TestRevisionSpec):
117
111
 
118
112
    def test_positive_int(self):
119
 
        self.assertInHistoryIs(0, 'null:', '0')
 
113
        self.assertInHistoryIs(0, None, '0')
120
114
        self.assertInHistoryIs(1, 'r1', '1')
121
115
        self.assertInHistoryIs(2, 'r2', '2')
122
116
        self.assertInvalid('3')
133
127
        self.assertInHistoryIs(1, 'r1', '-100')
134
128
 
135
129
    def test_positive(self):
136
 
        self.assertInHistoryIs(0, 'null:', 'revno:0')
 
130
        self.assertInHistoryIs(0, None, 'revno:0')
137
131
        self.assertInHistoryIs(1, 'r1', 'revno:1')
138
132
        self.assertInHistoryIs(2, 'r2', 'revno:2')
139
133
 
276
270
                                          revision_id='alt_r3')
277
271
        self.assertInHistoryIs(None, 'alt_r3', 'revid:alt_r3')
278
272
 
279
 
    def test_unicode(self):
280
 
        """We correctly convert a unicode ui string to an encoded revid."""
281
 
        revision_id = u'\N{SNOWMAN}'.encode('utf-8')
282
 
        self.tree.commit('unicode', rev_id=revision_id)
283
 
        self.assertInHistoryIs(3, revision_id, u'revid:\N{SNOWMAN}')
284
 
        self.assertInHistoryIs(3, revision_id, 'revid:' + revision_id)
285
 
 
286
273
 
287
274
class TestRevisionSpec_last(TestRevisionSpec):
288
275
 
289
276
    def test_positive(self):
290
277
        self.assertInHistoryIs(2, 'r2', 'last:1')
291
278
        self.assertInHistoryIs(1, 'r1', 'last:2')
292
 
        self.assertInHistoryIs(0, 'null:', 'last:3')
 
279
        self.assertInHistoryIs(0, None, 'last:3')
293
280
 
294
281
    def test_empty(self):
295
282
        self.assertInHistoryIs(2, 'r2', 'last:')
322
309
        self.assertInHistoryIs(1, 'r1', 'before:-1')
323
310
 
324
311
    def test_before_one(self):
325
 
        self.assertInHistoryIs(0, 'null:', 'before:1')
 
312
        self.assertInHistoryIs(0, None, 'before:1')
326
313
 
327
314
    def test_before_none(self):
328
315
        self.assertInvalid('before:0',
343
330
        new_tree.commit('first', rev_id='new_r1')
344
331
        self.tree.branch.repository.fetch(new_tree.branch.repository,
345
332
                                          revision_id='new_r1')
346
 
        self.assertInHistoryIs(0, 'null:', 'before:revid:new_r1')
 
333
        self.assertInHistoryIs(0, None, 'before:revid:new_r1')
347
334
 
348
335
 
349
336
class TestRevisionSpec_tag(TestRevisionSpec):
350
337
    
351
 
    def make_branch_and_tree(self, relpath):
352
 
        # override format as the default one may not support tags
353
 
        return TestRevisionSpec.make_branch_and_tree(
354
 
            self, relpath, format='dirstate-tags')
355
 
 
356
 
    def test_from_string_tag(self):
357
 
        spec = RevisionSpec.from_string('tag:bzr-0.14')
358
 
        self.assertIsInstance(spec, RevisionSpec_tag)
359
 
        self.assertEqual(spec.spec, 'bzr-0.14')
360
 
 
361
 
    def test_lookup_tag(self):
362
 
        self.tree.branch.tags.set_tag('bzr-0.14', 'r1')
363
 
        self.assertInHistoryIs(1, 'r1', 'tag:bzr-0.14')
364
 
 
365
 
    def test_failed_lookup(self):
366
 
        # tags that don't exist give a specific message: arguably we should
367
 
        # just give InvalidRevisionSpec but I think this is more helpful
368
 
        self.assertRaises(errors.NoSuchTag,
369
 
            self.get_in_history,
370
 
            'tag:some-random-tag')
 
338
    def test_invalid(self):
 
339
        self.assertInvalid('tag:foo', extra='\ntag: namespace registered,'
 
340
                                            ' but not implemented')
371
341
 
372
342
 
373
343
class TestRevisionSpec_date(TestRevisionSpec):
481
451
        new_tree = self.make_branch_and_tree('new_tree')
482
452
        self.assertRaises(errors.NoCommits,
483
453
                          self.get_in_history, 'branch:new_tree')
484
 
 
485
 
 
486
 
class TestRevisionSpec_submit(TestRevisionSpec):
487
 
 
488
 
    def test_submit_branch(self):
489
 
        # Common ancestor of trees is 'alt_r2'
490
 
        self.assertRaises(errors.NoSubmitBranch, self.get_in_history,
491
 
                          'submit:')
492
 
        self.tree.branch.set_parent('../tree2')
493
 
        self.assertInHistoryIs(None, 'alt_r2', 'submit:')
494
 
        self.tree.branch.set_parent('bogus')
495
 
        self.assertRaises(errors.NotBranchError, self.get_in_history,
496
 
            'submit:')
497
 
        # submit branch overrides parent branch
498
 
        self.tree.branch.set_submit_branch('tree2')
499
 
        self.assertInHistoryIs(None, 'alt_r2', 'submit:')