18
18
from bzrlib.selftest import TestCaseInTempDir
19
from bzrlib.errors import NoCommonAncestor, NoCommits
20
from bzrlib.branch import copy_branch
21
from bzrlib.merge import merge
23
20
class TestRevisionNamespaces(TestCaseInTempDir):
25
21
def test_revision_namespaces(self):
26
"""Test revision specifiers.
28
These identify revisions by date, etc."""
22
"""Functional tests for hashcache"""
29
23
from bzrlib.errors import NoSuchRevision
30
24
from bzrlib.branch import Branch
31
from bzrlib.revisionspec import RevisionSpec
33
b = Branch.initialize('.')
26
b = Branch('.', init=True)
35
28
b.commit('Commit one', rev_id='a@r-0-1')
36
29
b.commit('Commit two', rev_id='a@r-0-2')
37
30
b.commit('Commit three', rev_id='a@r-0-3')
39
self.assertEquals(RevisionSpec(None).in_history(b), (0, None))
40
self.assertEquals(RevisionSpec(1).in_history(b), (1, 'a@r-0-1'))
41
self.assertEquals(RevisionSpec('revno:1').in_history(b),
43
self.assertEquals(RevisionSpec('revid:a@r-0-1').in_history(b),
45
self.assertRaises(NoSuchRevision,
46
RevisionSpec('revid:a@r-0-0').in_history, b)
47
self.assertRaises(TypeError, RevisionSpec, object)
49
self.assertEquals(RevisionSpec('date:-tomorrow').in_history(b),
51
self.assertEquals(RevisionSpec('date:+today').in_history(b),
54
self.assertEquals(RevisionSpec('last:1').in_history(b),
56
self.assertEquals(RevisionSpec('-1').in_history(b), (3, 'a@r-0-3'))
57
# self.assertEquals(b.get_revision_info('last:1'), (3, 'a@r-0-3'))
58
# self.assertEquals(b.get_revision_info('-1'), (3, 'a@r-0-3'))
60
self.assertEquals(RevisionSpec('ancestor:.').in_history(b).rev_id,
32
self.assertEquals(b.get_revision_info(None), (0, None))
33
self.assertEquals(b.get_revision_info(1), (1, 'a@r-0-1'))
34
self.assertEquals(b.get_revision_info('revno:1'), (1, 'a@r-0-1'))
35
self.assertEquals(b.get_revision_info('revid:a@r-0-1'), (1, 'a@r-0-1'))
36
self.assertRaises(NoSuchRevision, b.get_revision_info, 'revid:a@r-0-0')
37
self.assertRaises(TypeError, b.get_revision_info, object)
39
self.assertEquals(b.get_revision_info('date:-tomorrow'), (3, 'a@r-0-3'))
40
self.assertEquals(b.get_revision_info('date:+today'), (1, 'a@r-0-1'))
42
self.assertEquals(b.get_revision_info('last:1'), (3, 'a@r-0-3'))
43
self.assertEquals(b.get_revision_info('-1'), (3, 'a@r-0-3'))
63
45
os.mkdir('newbranch')
64
b2 = Branch.initialize('newbranch')
65
self.assertRaises(NoCommits, RevisionSpec('ancestor:.').in_history, b2)
68
b3 = copy_branch(b, 'copy')
69
b3.commit('Commit four', rev_id='b@r-0-4')
70
self.assertEquals(RevisionSpec('ancestor:.').in_history(b3).rev_id,
72
merge(['copy', -1], [None, None])
73
b.commit('Commit five', rev_id='a@r-0-4')
74
self.assertEquals(RevisionSpec('ancestor:copy').in_history(b).rev_id,
76
self.assertEquals(RevisionSpec('ancestor:.').in_history(b3).rev_id,
46
b2 = Branch('newbranch', init=True)
47
self.assertEquals(b2.lookup_revision('revid:a@r-0-1'), 'a@r-0-1')