22
22
from sha import sha
25
from bzrlib.tests import TestCaseInTempDir
25
from bzrlib.tests import TestCaseWithTransport
26
26
from bzrlib.branch import Branch
27
27
from bzrlib.testament import Testament
28
28
from bzrlib.trace import mutter
29
29
from bzrlib.osutils import has_symlinks
32
class TestamentTests(TestCaseInTempDir):
32
class TestamentTests(TestCaseWithTransport):
35
35
super(TestamentTests, self).setUp()
36
b = self.b = Branch.initialize(u'.')
36
self.wt = self.make_branch_and_tree('.')
37
b = self.b = self.wt.branch
37
38
b.nick = "test branch"
38
b.working_tree().commit(message='initial null commit',
39
self.wt.commit(message='initial null commit',
39
40
committer='test@user',
40
41
timestamp=1129025423, # 'Tue Oct 11 20:10:23 2005'
43
44
self.build_tree_contents([('hello', 'contents of hello file'),
45
46
('src/foo.c', 'int main()\n{\n}\n')])
46
b.working_tree().add(['hello', 'src', 'src/foo.c'],
47
self.wt.add(['hello', 'src', 'src/foo.c'],
47
48
['hello-id', 'src-id', 'foo.c-id'])
48
b.working_tree().commit(message='add files and directories',
49
self.wt.commit(message='add files and directories',
49
50
timestamp=1129025483,
51
52
rev_id='test@user-2',
54
55
def test_null_testament(self):
55
56
"""Testament for a revision with no contents."""
56
t = Testament.from_revision(self.b, 'test@user-1')
57
t = Testament.from_revision(self.b.repository, 'test@user-1')
57
58
ass = self.assertTrue
58
59
eq = self.assertEqual
59
60
ass(isinstance(t, Testament))
65
66
def test_testment_text_form(self):
66
67
"""Conversion of testament to canonical text form."""
67
t = Testament.from_revision(self.b, 'test@user-1')
68
t = Testament.from_revision(self.b.repository, 'test@user-1')
68
69
text_form = t.as_text()
69
70
self.log('testament text form:\n' + text_form)
70
71
self.assertEqual(text_form, REV_1_TESTAMENT)
72
73
def test_testament_with_contents(self):
73
74
"""Testament containing a file and a directory."""
74
t = Testament.from_revision(self.b, 'test@user-2')
75
t = Testament.from_revision(self.b.repository, 'test@user-2')
75
76
text_form = t.as_text()
76
77
self.log('testament text form:\n' + text_form)
77
78
self.assertEqualDiff(text_form, REV_2_TESTAMENT)
95
96
if not has_symlinks():
97
98
os.symlink('wibble/linktarget', 'link')
98
self.b.working_tree().add(['link'], ['link-id'])
99
self.b.working_tree().commit(message='add symlink',
99
self.wt.add(['link'], ['link-id'])
100
self.wt.commit(message='add symlink',
100
101
timestamp=1129025493,
102
103
rev_id='test@user-3',
103
104
committer='test@user')
104
t = Testament.from_revision(self.b, 'test@user-3')
105
t = Testament.from_revision(self.b.repository, 'test@user-3')
105
106
self.assertEqualDiff(t.as_text(), REV_3_TESTAMENT)
107
108
def test_testament_revprops(self):
108
109
"""Testament to revision with extra properties"""
109
110
props = dict(flavor='sour cherry\ncream cheese',
111
self.b.working_tree().commit(message='revision with properties',
112
self.wt.commit(message='revision with properties',
112
113
timestamp=1129025493,
114
115
rev_id='test@user-3',
115
116
committer='test@user',
117
t = Testament.from_revision(self.b, 'test@user-3')
118
t = Testament.from_revision(self.b.repository, 'test@user-3')
118
119
self.assertEqualDiff(t.as_text(), REV_PROPS_TESTAMENT)
120
121
def test___init__(self):
121
revision = self.b.get_revision('test@user-2')
122
inventory = self.b.get_inventory('test@user-2')
122
revision = self.b.repository.get_revision('test@user-2')
123
inventory = self.b.repository.get_inventory('test@user-2')
123
124
testament_1 = Testament(revision, inventory).as_short_text()
124
testament_2 = Testament.from_revision(self.b,
125
testament_2 = Testament.from_revision(self.b.repository,
125
126
'test@user-2').as_short_text()
126
127
self.assertEqual(testament_1, testament_2)