15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19
from bzrlib.selftest import TestCaseInTempDir
20
from bzrlib.errors import NoCommonAncestor, NoCommits
21
from bzrlib.clone import copy_branch
22
from bzrlib.merge import merge
20
24
class TestRevisionNamespaces(TestCaseInTempDir):
21
26
def test_revision_namespaces(self):
22
"""Functional tests for hashcache"""
27
"""Test revision specifiers.
29
These identify revisions by date, etc."""
23
30
from bzrlib.errors import NoSuchRevision
24
31
from bzrlib.branch import Branch
25
32
from bzrlib.revisionspec import RevisionSpec
27
b = Branch('.', init=True)
34
b = Branch.initialize('.')
29
b.commit('Commit one', rev_id='a@r-0-1')
36
b.commit('Commit one', rev_id='a@r-0-1', timestamp=time.time() - 60*60*24)
30
37
b.commit('Commit two', rev_id='a@r-0-2')
31
38
b.commit('Commit three', rev_id='a@r-0-3')
33
self.assertEquals(RevisionSpec(b, None), (0, None))
34
self.assertEquals(RevisionSpec(b, 1), (1, 'a@r-0-1'))
35
self.assertEquals(RevisionSpec(b, 'revno:1'), (1, 'a@r-0-1'))
36
self.assertEquals(RevisionSpec(b, 'revid:a@r-0-1'), (1, 'a@r-0-1'))
37
self.assertRaises(NoSuchRevision, RevisionSpec, b, 'revid:a@r-0-0')
38
self.assertRaises(TypeError, RevisionSpec, b, object)
40
self.assertEquals(RevisionSpec(b, 'date:-tomorrow'), (3, 'a@r-0-3'))
41
self.assertEquals(RevisionSpec(b, 'date:+today'), (1, 'a@r-0-1'))
43
self.assertEquals(RevisionSpec(b, 'last:1'), (3, 'a@r-0-3'))
44
self.assertEquals(RevisionSpec(b, '-1'), (3, 'a@r-0-3'))
40
self.assertEquals(RevisionSpec(None).in_history(b), (0, None))
41
self.assertEquals(RevisionSpec(1).in_history(b), (1, 'a@r-0-1'))
42
self.assertEquals(RevisionSpec('revno:1').in_history(b),
44
self.assertEquals(RevisionSpec('revid:a@r-0-1').in_history(b),
46
self.assertRaises(NoSuchRevision,
47
RevisionSpec('revid:a@r-0-0').in_history, b)
48
self.assertRaises(TypeError, RevisionSpec, object)
50
self.assertEquals(RevisionSpec('date:today').in_history(b),
52
self.assertEquals(RevisionSpec('date:yesterday').in_history(b),
54
self.assertEquals(RevisionSpec('before:date:today').in_history(b),
57
self.assertEquals(RevisionSpec('last:1').in_history(b),
59
self.assertEquals(RevisionSpec('-1').in_history(b), (3, 'a@r-0-3'))
60
# self.assertEquals(b.get_revision_info('last:1'), (3, 'a@r-0-3'))
61
# self.assertEquals(b.get_revision_info('-1'), (3, 'a@r-0-3'))
63
self.assertEquals(RevisionSpec('ancestor:.').in_history(b).rev_id,
67
b2 = Branch.initialize('newbranch')
68
self.assertRaises(NoCommits, RevisionSpec('ancestor:.').in_history, b2)
71
b3 = copy_branch(b, 'copy')
72
b3.commit('Commit four', rev_id='b@r-0-4')
73
self.assertEquals(RevisionSpec('ancestor:.').in_history(b3).rev_id,
75
merge(['copy', -1], [None, None])
76
b.commit('Commit five', rev_id='a@r-0-4')
77
self.assertEquals(RevisionSpec('ancestor:copy').in_history(b).rev_id,
79
self.assertEquals(RevisionSpec('ancestor:.').in_history(b3).rev_id,