92
106
def _make_abc_tree(self, tree):
93
107
"""setup an abc content tree."""
94
108
files = ['a', 'b/', 'b/c']
95
self.build_tree(files, line_endings='binary',
109
self.build_tree(files, line_endings='binary',
96
110
transport=tree.bzrdir.root_transport)
97
111
tree.set_root_id('root-id')
98
112
tree.add(files, ['a-id', 'b-id', 'c-id'])
165
179
return self._convert_tree(tree, converter)
181
def get_tree_with_subdirs_and_all_content_types(self):
182
"""Return a test tree with subdirs and all content types.
184
The returned tree has the following inventory:
185
[('', inventory.ROOT_ID),
187
('1top-dir', '1top-dir'),
188
(u'2utf\u1234file', u'0utf\u1234file'),
189
('symlink', 'symlink'),
190
('1top-dir/0file-in-1topdir', '1file-in-1topdir'),
191
('1top-dir/1dir-in-1topdir', '0dir-in-1topdir')]
192
where each component has the type of its name - i.e. '1file..' is afile.
194
note that the order of the paths and fileids is deliberately
195
mismatched to ensure that the result order is path based.
197
tree = self.make_branch_and_tree('.')
201
'1top-dir/0file-in-1topdir',
202
'1top-dir/1dir-in-1topdir/'
207
u'0utf\u1234file'.encode('utf8'),
212
self.build_tree(paths)
215
'This platform does not support unicode file paths.')
217
tt = transform.TreeTransform(tree)
218
root_transaction_id = tt.trans_id_tree_path('')
219
tt.new_symlink('symlink',
220
root_transaction_id, 'link-target', 'symlink')
222
return self.workingtree_to_test_tree(tree)
224
def get_tree_with_utf8(self, tree):
225
"""Generate a tree with a utf8 revision and unicode paths."""
226
self._create_tree_with_utf8(tree)
227
return self.workingtree_to_test_tree(tree)
229
def _create_tree_with_utf8(self, tree):
230
"""Generate a tree with a utf8 revision and unicode paths."""
236
# bzr itself does not create unicode file ids, but we want them for
238
file_ids = ['TREE_ROOT',
244
self.build_tree(paths[1:])
246
raise tests.TestSkipped('filesystem does not support unicode.')
247
if tree.path2id('') is None:
248
# Some trees do not have a root yet.
249
tree.add(paths, file_ids)
251
# Some trees will already have a root
252
tree.set_root_id(file_ids[0])
253
tree.add(paths[1:], file_ids[1:])
255
tree.commit(u'in\xedtial', rev_id=u'r\xe9v-1'.encode('utf8'))
256
except errors.NonAsciiRevisionId:
257
raise tests.TestSkipped('non-ascii revision ids not supported')
259
def get_tree_with_merged_utf8(self, tree):
260
"""Generate a tree with utf8 ancestors."""
261
self._create_tree_with_utf8(tree)
262
tree2 = tree.bzrdir.sprout('tree2').open_workingtree()
263
self.build_tree([u'tree2/b\xe5r/z\xf7z'])
264
self.callDeprecated([osutils._file_id_warning],
265
tree2.add, [u'b\xe5r/z\xf7z'], [u'z\xf7z-id'])
266
tree2.commit(u'to m\xe9rge', rev_id=u'r\xe9v-2'.encode('utf8'))
268
tree.merge_from_branch(tree2.branch)
269
tree.commit(u'm\xe9rge', rev_id=u'r\xe9v-3'.encode('utf8'))
270
return self.workingtree_to_test_tree(tree)
168
273
class TreeTestProviderAdapter(WorkingTreeTestProviderAdapter):
169
274
"""Generate test suites for each Tree implementation in bzrlib.
185
292
RevisionTree.__name__)
186
293
revision_tree_test.workingtree_to_test_tree = revision_tree_from_workingtree
187
294
result.addTest(revision_tree_test)
295
# also explicity test WorkingTree4 against everything
296
dirstate_format = WorkingTreeFormat4()
297
dirstate_revision_tree_test = self._clone_test(
299
dirstate_format._matchingbzrdir,
301
DirStateRevisionTree.__name__)
302
dirstate_revision_tree_test.workingtree_to_test_tree = _dirstate_tree_from_workingtree
303
result.addTest(dirstate_revision_tree_test)
191
307
def test_suite():
192
308
result = TestSuite()
193
309
test_tree_implementations = [
310
'bzrlib.tests.tree_implementations.test_get_file_mtime',
311
'bzrlib.tests.tree_implementations.test_get_symlink_target',
312
'bzrlib.tests.tree_implementations.test_list_files',
313
'bzrlib.tests.tree_implementations.test_revision_tree',
194
314
'bzrlib.tests.tree_implementations.test_test_trees',
195
315
'bzrlib.tests.tree_implementations.test_tree',
316
'bzrlib.tests.tree_implementations.test_walkdirs',
197
318
adapter = TreeTestProviderAdapter(
198
319
default_transport,