/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_revisionspec.py

  • Committer: John Arbash Meinel
  • Date: 2008-06-05 16:27:16 UTC
  • mfrom: (3475 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3476.
  • Revision ID: john@arbash-meinel.com-20080605162716-a3hn238tnctbfd8j
merge bzr.dev, resolve NEWS

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
 
50
50
        self.tree = self.make_branch_and_tree('tree')
51
51
        self.build_tree(['tree/a'])
 
52
        self.tree.lock_write()
 
53
        self.addCleanup(self.tree.unlock)
52
54
        self.tree.add(['a'])
53
55
        self.tree.commit('a', rev_id='r1')
54
56
 
55
57
        self.tree2 = self.tree.bzrdir.sprout('tree2').open_workingtree()
56
58
        self.tree2.commit('alt', rev_id='alt_r2')
57
59
 
58
 
        self.tree.branch.repository.fetch(self.tree2.branch.repository,
59
 
                                          revision_id='alt_r2')
60
 
        self.tree.set_pending_merges(['alt_r2'])
 
60
        self.tree.merge_from_branch(self.tree2.branch)
61
61
        self.tree.commit('second', rev_id='r2')
62
62
 
63
63
    def get_in_history(self, revision_spec):
83
83
            self.fail('Expected InvalidRevisionSpec to be raised for %s'
84
84
                      % (revision_spec,))
85
85
 
 
86
    def assertAsRevisionId(self, revision_id, revision_spec):
 
87
        """Calling as_revision_id() should return the specified id."""
 
88
        spec = RevisionSpec.from_string(revision_spec)
 
89
        self.assertEqual(revision_id,
 
90
                         spec.as_revision_id(self.tree.branch))
 
91
 
 
92
 
 
93
class RevisionSpecMatchOnTrap(RevisionSpec):
 
94
 
 
95
    def _match_on(self, branch, revs):
 
96
        self.last_call = (branch, revs)
 
97
        return super(RevisionSpecMatchOnTrap, self)._match_on(branch, revs)
 
98
 
 
99
 
 
100
class TestRevisionSpecBase(TestRevisionSpec):
 
101
 
 
102
    def test_wants_revision_history(self):
 
103
        # If wants_revision_history = True, then _match_on should get the
 
104
        # branch revision history
 
105
        spec = RevisionSpecMatchOnTrap('foo', _internal=True)
 
106
        spec.in_history(self.tree.branch)
 
107
 
 
108
        self.assertEqual((self.tree.branch, ['r1' ,'r2']),
 
109
                         spec.last_call)
 
110
 
 
111
    def test_wants_no_revision_history(self):
 
112
        # If wants_revision_history = False, then _match_on should get None for
 
113
        # the branch revision history
 
114
        spec = RevisionSpecMatchOnTrap('foo', _internal=True)
 
115
        spec.wants_revision_history = False
 
116
        spec.in_history(self.tree.branch)
 
117
 
 
118
        self.assertEqual((self.tree.branch, None), spec.last_call)
 
119
 
 
120
 
86
121
 
87
122
class TestOddRevisionSpec(TestRevisionSpec):
88
123
    """Test things that aren't normally thought of as revision specs"""
89
124
 
90
125
    def test_none(self):
91
 
        self.assertInHistoryIs(0, None, None)
 
126
        self.assertInHistoryIs(None, None, None)
92
127
 
93
128
    def test_object(self):
94
129
        self.assertRaises(TypeError, RevisionSpec.from_string, object())
246
281
        self.assertEqual((2, 'b@r-0-2'),
247
282
                         spec_in_history('revno:2:b/', None))
248
283
 
 
284
    def test_as_revision_id(self):
 
285
        self.assertAsRevisionId('null:', '0')
 
286
        self.assertAsRevisionId('r1', '1')
 
287
        self.assertAsRevisionId('r2', '2')
 
288
        self.assertAsRevisionId('r1', '-2')
 
289
        self.assertAsRevisionId('r2', '-1')
 
290
        self.assertAsRevisionId('alt_r2', '1.1.1')
249
291
 
250
292
 
251
293
class TestRevisionSpec_revid(TestRevisionSpec):
283
325
        self.assertInHistoryIs(3, revision_id, u'revid:\N{SNOWMAN}')
284
326
        self.assertInHistoryIs(3, revision_id, 'revid:' + revision_id)
285
327
 
 
328
    def test_as_revision_id(self):
 
329
        self.assertAsRevisionId('r1', 'revid:r1')
 
330
        self.assertAsRevisionId('r2', 'revid:r2')
 
331
        self.assertAsRevisionId('alt_r2', 'revid:alt_r2')
 
332
 
286
333
 
287
334
class TestRevisionSpec_last(TestRevisionSpec):
288
335
 
314
361
            pass
315
362
        self.assertInvalid('last:Y', extra='\n' + str(e))
316
363
 
 
364
    def test_as_revision_id(self):
 
365
        self.assertAsRevisionId('r2', 'last:1')
 
366
        self.assertAsRevisionId('r1', 'last:2')
 
367
 
317
368
 
318
369
class TestRevisionSpec_before(TestRevisionSpec):
319
370
 
345
396
                                          revision_id='new_r1')
346
397
        self.assertInHistoryIs(0, 'null:', 'before:revid:new_r1')
347
398
 
 
399
    def test_as_revision_id(self):
 
400
        self.assertAsRevisionId('r1', 'before:revid:r2')
 
401
        self.assertAsRevisionId('r1', 'before:2')
 
402
        self.assertAsRevisionId('r1', 'before:1.1.1')
 
403
        self.assertAsRevisionId('r1', 'before:revid:alt_r2')
 
404
 
348
405
 
349
406
class TestRevisionSpec_tag(TestRevisionSpec):
350
407
    
361
418
    def test_lookup_tag(self):
362
419
        self.tree.branch.tags.set_tag('bzr-0.14', 'r1')
363
420
        self.assertInHistoryIs(1, 'r1', 'tag:bzr-0.14')
 
421
        self.tree.branch.tags.set_tag('null_rev', 'null:')
 
422
        self.assertInHistoryIs(0, 'null:', 'tag:null_rev')
364
423
 
365
424
    def test_failed_lookup(self):
366
425
        # tags that don't exist give a specific message: arguably we should
369
428
            self.get_in_history,
370
429
            'tag:some-random-tag')
371
430
 
 
431
    def test_as_revision_id(self):
 
432
        self.tree.branch.tags.set_tag('my-tag', 'r2')
 
433
        self.tree.branch.tags.set_tag('null_rev', 'null:')
 
434
        self.assertAsRevisionId('r2', 'tag:my-tag')
 
435
        self.assertAsRevisionId('null:', 'tag:null_rev')
 
436
        self.assertAsRevisionId('r1', 'before:tag:my-tag')
 
437
 
372
438
 
373
439
class TestRevisionSpec_date(TestRevisionSpec):
374
440
 
405
471
        self.assertInHistoryIs(2, 'new_r2',
406
472
            'date:%04d-%02d-%02d' % (now.year, now.month, now.day))
407
473
 
 
474
    def test_as_revision_id(self):
 
475
        self.assertAsRevisionId('new_r2', 'date:today')
 
476
 
408
477
 
409
478
class TestRevisionSpec_ancestor(TestRevisionSpec):
410
479
    
448
517
                          spec_in_history, 'ancestor:tree',
449
518
                                           new_tree.branch)
450
519
 
 
520
    def test_as_revision_id(self):
 
521
        self.assertAsRevisionId('alt_r2', 'ancestor:tree2')
 
522
 
451
523
 
452
524
class TestRevisionSpec_branch(TestRevisionSpec):
453
525
    
482
554
        self.assertRaises(errors.NoCommits,
483
555
                          self.get_in_history, 'branch:new_tree')
484
556
 
 
557
    def test_as_revision_id(self):
 
558
        self.assertAsRevisionId('alt_r2', 'branch:tree2')
 
559
 
485
560
 
486
561
class TestRevisionSpec_submit(TestRevisionSpec):
487
562
 
497
572
        # submit branch overrides parent branch
498
573
        self.tree.branch.set_submit_branch('tree2')
499
574
        self.assertInHistoryIs(None, 'alt_r2', 'submit:')
 
575
 
 
576
    def test_as_revision_id(self):
 
577
        self.tree.branch.set_submit_branch('tree2')
 
578
        self.assertAsRevisionId('alt_r2', 'branch:tree2')