38
38
TestCaseWithTransport,
42
43
from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
43
44
from bzrlib.revisiontree import RevisionTree
44
from bzrlib.workingtree import (WorkingTreeFormat,
45
WorkingTreeTestProviderAdapter,
45
from bzrlib.workingtree import (
48
WorkingTreeTestProviderAdapter,
51
from bzrlib.workingtree_4 import (
50
57
def return_parameter(something):
55
62
def revision_tree_from_workingtree(tree):
56
63
"""Create a revision tree from a working tree."""
64
revid = tree.commit('save tree', allow_pointless=True, recursive=None)
65
return tree.branch.repository.revision_tree(revid)
68
def _dirstate_tree_from_workingtree(tree):
57
69
revid = tree.commit('save tree', allow_pointless=True)
58
return tree.branch.repository.revision_tree(revid)
70
return tree.basis_tree()
61
73
class TestTreeImplementationSupport(TestCaseWithTransport):
94
106
def _make_abc_tree(self, tree):
95
107
"""setup an abc content tree."""
96
108
files = ['a', 'b/', 'b/c']
97
self.build_tree(files, line_endings='binary',
109
self.build_tree(files, line_endings='binary',
98
110
transport=tree.bzrdir.root_transport)
99
111
tree.set_root_id('root-id')
100
112
tree.add(files, ['a-id', 'b-id', 'c-id'])
167
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)
169
224
def get_tree_with_utf8(self, tree):
170
225
"""Generate a tree with a utf8 revision and unicode paths."""
171
226
self._create_tree_with_utf8(tree)
189
244
self.build_tree(paths[1:])
190
245
except UnicodeError:
191
246
raise tests.TestSkipped('filesystem does not support unicode.')
192
tree.add(paths, file_ids)
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:])
194
255
tree.commit(u'in\xedtial', rev_id=u'r\xe9v-1'.encode('utf8'))
195
256
except errors.NonAsciiRevisionId:
221
282
for adapted_test in result:
222
283
# for working tree adapted tests, preserve the tree
223
284
adapted_test.workingtree_to_test_tree = return_parameter
224
default_format = WorkingTreeFormat.get_default_format()
285
# this is the default in that it's used to test the generic InterTree
287
default_format = WorkingTreeFormat3()
225
288
revision_tree_test = self._clone_test(
227
290
default_format._matchingbzrdir,
229
292
RevisionTree.__name__)
230
293
revision_tree_test.workingtree_to_test_tree = revision_tree_from_workingtree
231
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)
235
307
def test_suite():
236
308
result = TestSuite()
237
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',
238
314
'bzrlib.tests.tree_implementations.test_test_trees',
239
315
'bzrlib.tests.tree_implementations.test_tree',
316
'bzrlib.tests.tree_implementations.test_walkdirs',
241
318
adapter = TreeTestProviderAdapter(
242
319
default_transport,