1
# Copyright (C) 2005, 2006 Canonical Ltd
1
# Copyright (C) 2005-2010 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
23
from bzrlib import osutils
24
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
25
from bzrlib.testament import Testament, StrictTestament, StrictTestament3
26
from bzrlib.transform import TreeTransform
23
from breezy import osutils
24
from breezy.tests import TestCaseWithTransport
25
from breezy.testament import (
30
from breezy.transform import TreeTransform
31
from breezy.tests.features import (
29
36
class TestamentSetup(TestCaseWithTransport):
32
39
super(TestamentSetup, self).setUp()
33
self.wt = self.make_branch_and_tree('.', format='dirstate-with-subtree')
34
self.wt.set_root_id('TREE_ROT')
40
self.wt = self.make_branch_and_tree('.', format='development-subtree')
41
self.wt.set_root_id(b'TREE_ROT')
35
42
b = self.b = self.wt.branch
36
43
b.nick = "test branch"
37
44
self.wt.commit(message='initial null commit',
38
45
committer='test@user',
39
46
timestamp=1129025423, # 'Tue Oct 11 20:10:23 2005'
42
self.build_tree_contents([('hello', 'contents of hello file'),
48
rev_id=b'test@user-1')
49
self.build_tree_contents([('hello', b'contents of hello file'),
44
('src/foo.c', 'int main()\n{\n}\n')])
51
('src/foo.c', b'int main()\n{\n}\n')])
45
52
self.wt.add(['hello', 'src', 'src/foo.c'],
46
['hello-id', 'src-id', 'foo.c-id'])
53
[b'hello-id', b'src-id', b'foo.c-id'])
47
54
tt = TreeTransform(self.wt)
48
55
trans_id = tt.trans_id_tree_path('hello')
49
56
tt.set_executability(True, trans_id)
99
106
"""Testament containing symlink (where possible)"""
100
107
self.requireFeature(SymlinkFeature)
101
108
os.symlink('wibble/linktarget', 'link')
102
self.wt.add(['link'], ['link-id'])
109
self.wt.add(['link'], [b'link-id'])
103
110
self.wt.commit(message='add symlink',
104
111
timestamp=1129025493,
106
rev_id='test@user-3',
113
rev_id=b'test@user-3',
107
114
committer='test@user')
108
115
t = self.from_revision(self.b.repository, 'test@user-3')
109
self.assertEqualDiff(t.as_text(), self.expected('rev_3'))
116
self.assertEqualDiff(t.as_text(), self.expected(b'rev_3'))
111
118
def test_testament_revprops(self):
112
119
"""Testament to revision with extra properties"""
128
135
message=u'non-ascii commit \N{COPYRIGHT SIGN} me',
129
136
timestamp=1129025493,
131
rev_id='test@user-3',
132
committer='Erik B\xe5gfors <test@user>',
138
rev_id=b'test@user-3',
139
committer=u'Erik B\xe5gfors <test@user>',
133
140
revprops={'uni':u'\xb5'}
135
142
t = self.from_revision(self.b.repository, 'test@user-3')
136
143
self.assertEqualDiff(
137
144
self.expected('sample_unicode').encode('utf-8'), t.as_text())
146
def test_from_tree(self):
147
tree = self.b.repository.revision_tree('test@user-2')
148
testament = self.testament_class().from_revision_tree(tree)
149
text_1 = testament.as_short_text()
150
text_2 = self.from_revision(self.b.repository,
151
'test@user-2').as_short_text()
152
self.assertEqual(text_1, text_2)
139
154
def test___init__(self):
140
155
revision = self.b.repository.get_revision('test@user-2')
141
inventory = self.b.repository.get_inventory('test@user-2')
142
testament_1 = self.testament_class()(revision, inventory)
156
tree = self.b.repository.revision_tree('test@user-2')
157
testament_1 = self.testament_class()(revision, tree)
143
158
text_1 = testament_1.as_short_text()
144
159
text_2 = self.from_revision(self.b.repository,
145
160
'test@user-2').as_short_text()
211
226
bazaar-ng testament short form 1
212
227
revision-id: test@user-1
214
""" % osutils.sha(REV_1_TESTAMENT).hexdigest()
229
""" % osutils.sha_string(REV_1_TESTAMENT)
217
232
REV_1_SHORT_STRICT = """\
218
233
bazaar-ng testament short form 2.1
219
234
revision-id: test@user-1
221
""" % osutils.sha(REV_1_STRICT_TESTAMENT).hexdigest()
236
""" % osutils.sha_string(REV_1_STRICT_TESTAMENT)
224
239
REV_1_SHORT_STRICT3 = """\
225
240
bazaar testament short form 3 strict
226
241
revision-id: test@user-1
228
""" % osutils.sha(REV_1_STRICT_TESTAMENT3).hexdigest()
231
REV_2_TESTAMENT = """\
243
""" % osutils.sha_string(REV_1_STRICT_TESTAMENT3)
246
REV_2_TESTAMENT = b"""\
232
247
bazaar-ng testament version 1
233
248
revision-id: test@user-2
234
249
committer: test@user
293
308
bazaar-ng testament short form 1
294
309
revision-id: test@user-2
296
""" % osutils.sha(REV_2_TESTAMENT).hexdigest()
311
""" % osutils.sha_string(REV_2_TESTAMENT)
299
314
REV_2_SHORT_STRICT = """\
300
315
bazaar-ng testament short form 2.1
301
316
revision-id: test@user-2
303
""" % osutils.sha(REV_2_STRICT_TESTAMENT).hexdigest()
318
""" % osutils.sha_string(REV_2_STRICT_TESTAMENT)
306
321
REV_2_SHORT_STRICT3 = """\
307
322
bazaar testament short form 3 strict
308
323
revision-id: test@user-2
310
""" % osutils.sha(REV_2_STRICT_TESTAMENT3).hexdigest()
313
REV_PROPS_TESTAMENT = """\
325
""" % osutils.sha_string(REV_2_STRICT_TESTAMENT3)
328
REV_PROPS_TESTAMENT = b"""\
314
329
bazaar-ng testament version 1
315
330
revision-id: test@user-3
316
331
committer: test@user