75
74
% (revision_spec, exp_revision_id, rev_info.rev_id))
77
def assertInvalid(self, revision_spec, extra='',
78
invalid_as_revision_id=True):
76
def assertInvalid(self, revision_spec, extra=''):
80
78
self.get_in_history(revision_spec)
81
79
except errors.InvalidRevisionSpec, e:
82
80
self.assertEqual(revision_spec, e.spec)
83
81
self.assertEqual(extra, e.extra)
85
self.fail('Expected InvalidRevisionSpec to be raised for'
86
' %r.in_history' % (revision_spec,))
87
if invalid_as_revision_id:
89
spec = RevisionSpec.from_string(revision_spec)
90
spec.as_revision_id(self.tree.branch)
91
except errors.InvalidRevisionSpec, e:
92
self.assertEqual(revision_spec, e.spec)
93
self.assertEqual(extra, e.extra)
95
self.fail('Expected InvalidRevisionSpec to be raised for'
96
' %r.as_revision_id' % (revision_spec,))
83
self.fail('Expected InvalidRevisionSpec to be raised for %s'
98
86
def assertAsRevisionId(self, revision_id, revision_spec):
99
87
"""Calling as_revision_id() should return the specified id."""
101
89
self.assertEqual(revision_id,
102
90
spec.as_revision_id(self.tree.branch))
104
def get_as_tree(self, revision_spec, tree=None):
107
spec = RevisionSpec.from_string(revision_spec)
108
return spec.as_tree(tree.branch)
111
93
class RevisionSpecMatchOnTrap(RevisionSpec):
307
289
self.assertAsRevisionId('r2', '-1')
308
290
self.assertAsRevisionId('alt_r2', '1.1.1')
310
def test_as_tree(self):
311
tree = self.get_as_tree('0')
312
self.assertEquals(_mod_revision.NULL_REVISION, tree.get_revision_id())
313
tree = self.get_as_tree('1')
314
self.assertEquals('r1', tree.get_revision_id())
315
tree = self.get_as_tree('2')
316
self.assertEquals('r2', tree.get_revision_id())
317
tree = self.get_as_tree('-2')
318
self.assertEquals('r1', tree.get_revision_id())
319
tree = self.get_as_tree('-1')
320
self.assertEquals('r2', tree.get_revision_id())
321
tree = self.get_as_tree('1.1.1')
322
self.assertEquals('alt_r2', tree.get_revision_id())
325
293
class TestRevisionSpec_revid(TestRevisionSpec):
331
299
self.assertInHistoryIs(2, 'r2', 'revid:r2')
333
301
def test_missing(self):
334
self.assertInvalid('revid:r3', invalid_as_revision_id=False)
302
self.assertInvalid('revid:r3')
336
304
def test_merged(self):
337
305
"""We can reach revisions in the ancestry"""
340
308
def test_not_here(self):
341
309
self.tree2.commit('alt third', rev_id='alt_r3')
342
310
# It exists in tree2, but not in tree
343
self.assertInvalid('revid:alt_r3', invalid_as_revision_id=False)
311
self.assertInvalid('revid:alt_r3')
345
313
def test_in_repository(self):
346
314
"""We can get any revision id in the repository"""
585
553
new_tree = self.make_branch_and_tree('new_tree')
586
554
self.assertRaises(errors.NoCommits,
587
555
self.get_in_history, 'branch:new_tree')
588
self.assertRaises(errors.NoCommits,
589
self.get_as_tree, 'branch:new_tree')
591
557
def test_as_revision_id(self):
592
558
self.assertAsRevisionId('alt_r2', 'branch:tree2')
594
def test_as_tree(self):
595
tree = self.get_as_tree('branch:tree', self.tree2)
596
self.assertEquals('r2', tree.get_revision_id())
597
self.assertFalse(self.tree2.branch.repository.has_revision('r2'))
600
561
class TestRevisionSpec_submit(TestRevisionSpec):