/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
3363.2.7 by Aaron Bentley
Implement alterntative-to-inventory tests
1
# Copyright (C) 2006, 2007, 2008 Canonical Ltd
1852.6.7 by Robert Collins
Fix up new tree_implementations __init__.py header.
2
#
1852.6.1 by Robert Collins
Start tree implementation tests.
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1852.6.7 by Robert Collins
Fix up new tree_implementations __init__.py header.
7
#
1852.6.1 by Robert Collins
Start tree implementation tests.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1852.6.7 by Robert Collins
Fix up new tree_implementations __init__.py header.
12
#
1852.6.1 by Robert Collins
Start tree implementation tests.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
18
"""Tree implementation tests for bzr.
19
20
These test the conformance of all the tree variations to the expected API.
21
Specific tests for individual variations are in other places such as:
22
 - tests/test_tree.py
23
 - tests/test_revision.py
24
 - tests/test_workingtree.py
25
 - tests/workingtree_implementations/*.py.
26
"""
27
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
28
from bzrlib import (
29
    errors,
2309.4.10 by John Arbash Meinel
(fixed) Fix the last few tests that were explicitly passing around unicode ids
30
    osutils,
2294.1.1 by John Arbash Meinel
Track down some non-ascii deficiencies in commit logic.
31
    tests,
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
32
    transform,
33
    )
1852.6.1 by Robert Collins
Start tree implementation tests.
34
from bzrlib.transport import get_transport
35
from bzrlib.tests import (
36
                          adapt_modules,
37
                          default_transport,
38
                          TestCaseWithTransport,
2321.1.2 by Robert Collins
Skip new tests that depend on unicode file paths.
39
                          TestSkipped,
1852.6.1 by Robert Collins
Start tree implementation tests.
40
                          )
41
from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
2553.2.10 by Robert Collins
And overhaul WorkingTreeTestProviderAdapter too.
42
from bzrlib.tests.workingtree_implementations import (
43
    WorkingTreeTestProviderAdapter,
44
    )
2079.1.1 by John Arbash Meinel
Create a deprecated bzrlib.tree.RevisionTree() in favor of bzrlib.revisiontree.RevisionTree()
45
from bzrlib.revisiontree import RevisionTree
3363.2.2 by Aaron Bentley
Add PreviewTree pre scenarios
46
from bzrlib.transform import TransformPreview
2255.2.164 by Martin Pool
Change the default format for some tests from AB1 back to WorkingTreeFormat3
47
from bzrlib.workingtree import (
48
    WorkingTreeFormat,
49
    WorkingTreeFormat3,
50
    _legacy_formats,
51
    )
2255.2.64 by John Arbash Meinel
Add the DirStateRevisionTree to the list of 'tree_implementations'
52
from bzrlib.workingtree_4 import (
53
    DirStateRevisionTree,
54
    WorkingTreeFormat4,
55
    )
1852.6.1 by Robert Collins
Start tree implementation tests.
56
57
3363.1.2 by Aaron Bentley
Add TestCase as converter param
58
def return_parameter(testcase, something):
1852.6.1 by Robert Collins
Start tree implementation tests.
59
    """A trivial thunk to return its input."""
60
    return something
61
62
3363.1.2 by Aaron Bentley
Add TestCase as converter param
63
def revision_tree_from_workingtree(testcase, tree):
1852.6.1 by Robert Collins
Start tree implementation tests.
64
    """Create a revision tree from a working tree."""
2100.3.36 by Aaron Bentley
avoid subtree commit when converting a work tree into a revision tree
65
    revid = tree.commit('save tree', allow_pointless=True, recursive=None)
1852.6.1 by Robert Collins
Start tree implementation tests.
66
    return tree.branch.repository.revision_tree(revid)
67
68
3363.1.2 by Aaron Bentley
Add TestCase as converter param
69
def _dirstate_tree_from_workingtree(testcase, tree):
3504.2.1 by John Arbash Meinel
Shortcut iter_references when we know references aren't supported.
70
    revid = tree.commit('save tree', allow_pointless=True, recursive=None)
2255.2.64 by John Arbash Meinel
Add the DirStateRevisionTree to the list of 'tree_implementations'
71
    return tree.basis_tree()
72
73
3363.2.2 by Aaron Bentley
Add PreviewTree pre scenarios
74
def preview_tree_pre(testcase, tree):
75
    tt = TransformPreview(tree)
76
    testcase.addCleanup(tt.finalize)
3363.9.7 by Aaron Bentley
Fix up to use set_parent_ids
77
    preview_tree = tt.get_preview_tree()
78
    preview_tree.set_parent_ids(tree.get_parent_ids())
79
    return preview_tree
3363.2.2 by Aaron Bentley
Add PreviewTree pre scenarios
80
81
1852.6.1 by Robert Collins
Start tree implementation tests.
82
class TestTreeImplementationSupport(TestCaseWithTransport):
83
84
    def test_revision_tree_from_workingtree(self):
85
        tree = self.make_branch_and_tree('.')
3363.1.3 by Aaron Bentley
Hide workingtree_to_test_tree behind a method, to get bound self
86
        tree = revision_tree_from_workingtree(self, tree)
1852.6.1 by Robert Collins
Start tree implementation tests.
87
        self.assertIsInstance(tree, RevisionTree)
88
89
90
class TestCaseWithTree(TestCaseWithBzrDir):
91
1852.8.3 by Robert Collins
Implement an InterTreeTestProvider and a trivial test_compare test case.
92
    def make_branch_and_tree(self, relpath):
93
        made_control = self.make_bzrdir(relpath, format=
94
            self.workingtree_format._matchingbzrdir)
1852.6.1 by Robert Collins
Start tree implementation tests.
95
        made_control.create_repository()
96
        made_control.create_branch()
97
        return self.workingtree_format.initialize(made_control)
98
3363.1.3 by Aaron Bentley
Hide workingtree_to_test_tree behind a method, to get bound self
99
    def workingtree_to_test_tree(self, tree):
100
        return self._workingtree_to_test_tree(self, tree)
101
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
102
    def _convert_tree(self, tree, converter=None):
103
        """helper to convert using the converter or a supplied one."""
104
        # convert that to the final shape
105
        if converter is None:
106
            converter = self.workingtree_to_test_tree
3363.1.3 by Aaron Bentley
Hide workingtree_to_test_tree behind a method, to get bound self
107
        return converter(tree)
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
108
1852.8.3 by Robert Collins
Implement an InterTreeTestProvider and a trivial test_compare test case.
109
    def get_tree_no_parents_no_content(self, empty_tree, converter=None):
110
        """Make a tree with no parents and no contents from empty_tree.
111
        
112
        :param empty_tree: A working tree with no content and no parents to
113
            modify.
114
        """
1731.1.33 by Aaron Bentley
Revert no-special-root changes
115
        empty_tree.set_root_id('empty-root-id')
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
116
        return self._convert_tree(empty_tree, converter)
1852.6.1 by Robert Collins
Start tree implementation tests.
117
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
118
    def _make_abc_tree(self, tree):
119
        """setup an abc content tree."""
120
        files = ['a', 'b/', 'b/c']
2255.2.15 by Robert Collins
Dirstate - truncate state file fixing bug in saving a smaller file, get more tree_implementation tests passing.
121
        self.build_tree(files, line_endings='binary',
1982.1.4 by Alexander Belchenko
tree_implementations tests: build_tree with binary (LF) line-endings
122
                        transport=tree.bzrdir.root_transport)
1731.1.33 by Aaron Bentley
Revert no-special-root changes
123
        tree.set_root_id('root-id')
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
124
        tree.add(files, ['a-id', 'b-id', 'c-id'])
125
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
126
    def get_tree_no_parents_abc_content(self, tree, converter=None):
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
127
        """return a test tree with a, b/, b/c contents."""
128
        self._make_abc_tree(tree)
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
129
        return self._convert_tree(tree, converter)
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
130
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
131
    def get_tree_no_parents_abc_content_2(self, tree, converter=None):
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
132
        """return a test tree with a, b/, b/c contents.
133
        
134
        This variation changes the content of 'a' to foobar\n.
135
        """
136
        self._make_abc_tree(tree)
137
        f = open(tree.basedir + '/a', 'wb')
138
        try:
139
            f.write('foobar\n')
140
        finally:
141
            f.close()
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
142
        return self._convert_tree(tree, converter)
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
143
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
144
    def get_tree_no_parents_abc_content_3(self, tree, converter=None):
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
145
        """return a test tree with a, b/, b/c contents.
146
        
147
        This variation changes the executable flag of b/c to True.
148
        """
149
        self._make_abc_tree(tree)
150
        tt = transform.TreeTransform(tree)
151
        trans_id = tt.trans_id_tree_path('b/c')
152
        tt.set_executability(True, trans_id)
153
        tt.apply()
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
154
        return self._convert_tree(tree, converter)
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
155
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
156
    def get_tree_no_parents_abc_content_4(self, tree, converter=None):
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
157
        """return a test tree with d, b/, b/c contents.
158
        
159
        This variation renames a to d.
160
        """
161
        self._make_abc_tree(tree)
162
        tree.rename_one('a', 'd')
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
163
        return self._convert_tree(tree, converter)
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
164
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
165
    def get_tree_no_parents_abc_content_5(self, tree, converter=None):
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
166
        """return a test tree with d, b/, b/c contents.
167
        
168
        This variation renames a to d and alters its content to 'bar\n'.
169
        """
170
        self._make_abc_tree(tree)
171
        tree.rename_one('a', 'd')
172
        f = open(tree.basedir + '/d', 'wb')
173
        try:
174
            f.write('bar\n')
175
        finally:
176
            f.close()
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
177
        return self._convert_tree(tree, converter)
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
178
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
179
    def get_tree_no_parents_abc_content_6(self, tree, converter=None):
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
180
        """return a test tree with a, b/, e contents.
181
        
182
        This variation renames b/c to e, and makes it executable.
183
        """
184
        self._make_abc_tree(tree)
185
        tt = transform.TreeTransform(tree)
186
        trans_id = tt.trans_id_tree_path('b/c')
187
        parent_trans_id = tt.trans_id_tree_path('')
188
        tt.adjust_path('e', parent_trans_id, trans_id)
189
        tt.set_executability(True, trans_id)
190
        tt.apply()
1852.8.7 by Robert Collins
Update tree_implementation test tree factories to be intertree ready.
191
        return self._convert_tree(tree, converter)
1852.6.9 by Robert Collins
Add more test trees to the tree-implementations tests.
192
1852.15.1 by Robert Collins
Add a complex test tree for use with Tree.walkdirs.
193
    def get_tree_with_subdirs_and_all_content_types(self):
194
        """Return a test tree with subdirs and all content types.
2408.1.3 by Alexander Belchenko
tree_implementations: make usage of symlinks optional
195
        See get_tree_with_subdirs_and_all_supported_content_types for details.
196
        """
2408.1.8 by Alexander Belchenko
forget to return tree
197
        return self.get_tree_with_subdirs_and_all_supported_content_types(True)
2408.1.3 by Alexander Belchenko
tree_implementations: make usage of symlinks optional
198
199
    def get_tree_with_subdirs_and_all_supported_content_types(self, symlinks):
200
        """Return a test tree with subdirs and all supported content types.
201
        Some content types may not be created on some platforms
202
        (like symlinks on native win32)
203
204
        :param  symlinks:   control is symlink should be created in the tree.
205
                            Note: if you wish to automatically set this
206
                            parameters depending on underlying system,
207
                            please use value returned
208
                            by bzrlib.osutils.has_symlinks() function.
1852.15.1 by Robert Collins
Add a complex test tree for use with Tree.walkdirs.
209
210
        The returned tree has the following inventory:
211
            [('', inventory.ROOT_ID),
212
             ('0file', '2file'),
213
             ('1top-dir', '1top-dir'),
214
             (u'2utf\u1234file', u'0utf\u1234file'),
2408.1.3 by Alexander Belchenko
tree_implementations: make usage of symlinks optional
215
             ('symlink', 'symlink'),            # only if symlinks arg is True
1852.15.1 by Robert Collins
Add a complex test tree for use with Tree.walkdirs.
216
             ('1top-dir/0file-in-1topdir', '1file-in-1topdir'),
217
             ('1top-dir/1dir-in-1topdir', '0dir-in-1topdir')]
2408.1.3 by Alexander Belchenko
tree_implementations: make usage of symlinks optional
218
        where each component has the type of its name -
219
        i.e. '1file..' is afile.
1852.15.1 by Robert Collins
Add a complex test tree for use with Tree.walkdirs.
220
221
        note that the order of the paths and fileids is deliberately 
222
        mismatched to ensure that the result order is path based.
223
        """
224
        tree = self.make_branch_and_tree('.')
225
        paths = ['0file',
226
            '1top-dir/',
227
            u'2utf\u1234file',
228
            '1top-dir/0file-in-1topdir',
229
            '1top-dir/1dir-in-1topdir/'
230
            ]
231
        ids = [
232
            '2file',
233
            '1top-dir',
2255.2.107 by John Arbash Meinel
(working), fix dirstate to use utf8 file ids.
234
            u'0utf\u1234file'.encode('utf8'),
1852.15.1 by Robert Collins
Add a complex test tree for use with Tree.walkdirs.
235
            '1file-in-1topdir',
236
            '0dir-in-1topdir'
237
            ]
2321.1.2 by Robert Collins
Skip new tests that depend on unicode file paths.
238
        try:
239
            self.build_tree(paths)
240
        except UnicodeError:
241
            raise TestSkipped(
242
                'This platform does not support unicode file paths.')
1852.15.1 by Robert Collins
Add a complex test tree for use with Tree.walkdirs.
243
        tree.add(paths, ids)
244
        tt = transform.TreeTransform(tree)
2408.1.3 by Alexander Belchenko
tree_implementations: make usage of symlinks optional
245
        if symlinks:
246
            root_transaction_id = tt.trans_id_tree_path('')
247
            tt.new_symlink('symlink',
248
                root_transaction_id, 'link-target', 'symlink')
1852.15.1 by Robert Collins
Add a complex test tree for use with Tree.walkdirs.
249
        tt.apply()
250
        return self.workingtree_to_test_tree(tree)
251
2294.1.1 by John Arbash Meinel
Track down some non-ascii deficiencies in commit logic.
252
    def get_tree_with_utf8(self, tree):
253
        """Generate a tree with a utf8 revision and unicode paths."""
2294.1.2 by John Arbash Meinel
Track down and add tests that all tree.commit() can handle
254
        self._create_tree_with_utf8(tree)
255
        return self.workingtree_to_test_tree(tree)
256
257
    def _create_tree_with_utf8(self, tree):
258
        """Generate a tree with a utf8 revision and unicode paths."""
2294.1.3 by John Arbash Meinel
Make sure the inventory enrtries returned are properly formed.
259
        paths = [u'',
260
                 u'f\xf6',
2294.1.1 by John Arbash Meinel
Track down some non-ascii deficiencies in commit logic.
261
                 u'b\xe5r/',
262
                 u'b\xe5r/b\xe1z',
263
                ]
264
        # bzr itself does not create unicode file ids, but we want them for
265
        # testing.
2309.4.10 by John Arbash Meinel
(fixed) Fix the last few tests that were explicitly passing around unicode ids
266
        file_ids = ['TREE_ROOT',
267
                    'f\xc3\xb6-id',
268
                    'b\xc3\xa5r-id',
269
                    'b\xc3\xa1z-id',
2294.1.1 by John Arbash Meinel
Track down some non-ascii deficiencies in commit logic.
270
                   ]
271
        try:
2294.1.3 by John Arbash Meinel
Make sure the inventory enrtries returned are properly formed.
272
            self.build_tree(paths[1:])
2294.1.1 by John Arbash Meinel
Track down some non-ascii deficiencies in commit logic.
273
        except UnicodeError:
274
            raise tests.TestSkipped('filesystem does not support unicode.')
2946.3.3 by John Arbash Meinel
Prefer tree.get_root_id() as more explicit than tree.path2id('')
275
        if tree.get_root_id() is None:
2255.2.107 by John Arbash Meinel
(working), fix dirstate to use utf8 file ids.
276
            # Some trees do not have a root yet.
277
            tree.add(paths, file_ids)
278
        else:
279
            # Some trees will already have a root
280
            tree.set_root_id(file_ids[0])
281
            tree.add(paths[1:], file_ids[1:])
2294.1.1 by John Arbash Meinel
Track down some non-ascii deficiencies in commit logic.
282
        try:
283
            tree.commit(u'in\xedtial', rev_id=u'r\xe9v-1'.encode('utf8'))
284
        except errors.NonAsciiRevisionId:
285
            raise tests.TestSkipped('non-ascii revision ids not supported')
2294.1.2 by John Arbash Meinel
Track down and add tests that all tree.commit() can handle
286
287
    def get_tree_with_merged_utf8(self, tree):
288
        """Generate a tree with utf8 ancestors."""
289
        self._create_tree_with_utf8(tree)
290
        tree2 = tree.bzrdir.sprout('tree2').open_workingtree()
291
        self.build_tree([u'tree2/b\xe5r/z\xf7z'])
2858.2.1 by Martin Pool
Remove most calls to safe_file_id and safe_revision_id.
292
        tree2.add([u'b\xe5r/z\xf7z'], [u'z\xf7z-id'.encode('utf-8')])
2294.1.2 by John Arbash Meinel
Track down and add tests that all tree.commit() can handle
293
        tree2.commit(u'to m\xe9rge', rev_id=u'r\xe9v-2'.encode('utf8'))
294
295
        tree.merge_from_branch(tree2.branch)
296
        tree.commit(u'm\xe9rge', rev_id=u'r\xe9v-3'.encode('utf8'))
2294.1.1 by John Arbash Meinel
Track down some non-ascii deficiencies in commit logic.
297
        return self.workingtree_to_test_tree(tree)
298
1852.6.1 by Robert Collins
Start tree implementation tests.
299
300
class TreeTestProviderAdapter(WorkingTreeTestProviderAdapter):
301
    """Generate test suites for each Tree implementation in bzrlib.
302
2553.2.10 by Robert Collins
And overhaul WorkingTreeTestProviderAdapter too.
303
    Currently this covers all working tree formats, and RevisionTree and
304
    DirStateRevisionTree by committing a working tree to create the revision
305
    tree.
1852.6.1 by Robert Collins
Start tree implementation tests.
306
    """
307
2553.2.10 by Robert Collins
And overhaul WorkingTreeTestProviderAdapter too.
308
    def __init__(self, transport_server, transport_readonly_server, formats):
3543.1.7 by Martin Pool
doc
309
        """Create a TreeTestProviderAdapter.
310
311
        :param formats: [workingtree_format]
312
        """
2553.2.10 by Robert Collins
And overhaul WorkingTreeTestProviderAdapter too.
313
        super(TreeTestProviderAdapter, self).__init__(transport_server,
314
            transport_readonly_server, formats)
315
        # now adjust the scenarios and add the non-working-tree tree scenarios.
316
        for scenario in self.scenarios:
1852.6.1 by Robert Collins
Start tree implementation tests.
317
            # for working tree adapted tests, preserve the tree
3363.1.3 by Aaron Bentley
Hide workingtree_to_test_tree behind a method, to get bound self
318
            scenario[1]["_workingtree_to_test_tree"] = return_parameter
2553.2.10 by Robert Collins
And overhaul WorkingTreeTestProviderAdapter too.
319
        # add RevisionTree scenario
3363.1.1 by Aaron Bentley
Refactor intertree scenario creation
320
        self.scenarios.append(self.create_tree_scenario(RevisionTree.__name__,
321
                              revision_tree_from_workingtree,))
322
323
        # also test WorkingTree4's RevisionTree implementation which is
324
        # specialised.
325
        self.scenarios.append(self.create_tree_scenario(
326
            DirStateRevisionTree.__name__, _dirstate_tree_from_workingtree,
327
            WorkingTreeFormat4()))
3363.2.2 by Aaron Bentley
Add PreviewTree pre scenarios
328
        self.scenarios.append(self.create_tree_scenario('PreviewTree',
329
            preview_tree_pre))
3363.1.1 by Aaron Bentley
Refactor intertree scenario creation
330
331
    def create_tree_scenario(self, name, converter, workingtree_format=None):
3363.1.6 by Aaron Bentley
Add docs
332
        """Create a scenario for the specified converter
333
334
        :param name: The name to append to tests using this converter
335
        :param converter: A function that converts a workingtree into the
336
            desired format.
337
        :param workingtree_format: The particular workingtree format to
338
            convert from.
339
        :return: a (name, options) tuple, where options is a dict of values
340
            to be used as members of the TestCase.
341
        """
3363.1.1 by Aaron Bentley
Refactor intertree scenario creation
342
        if workingtree_format is None:
3504.2.1 by John Arbash Meinel
Shortcut iter_references when we know references aren't supported.
343
            workingtree_format = WorkingTreeFormat._default_format
3363.1.1 by Aaron Bentley
Refactor intertree scenario creation
344
        scenario_options = WorkingTreeTestProviderAdapter.create_scenario(self,
3543.1.1 by Michael Hudson
change the scenario multiplication to get the bzrdir format from the tree and
345
            workingtree_format)[1]
3363.1.3 by Aaron Bentley
Hide workingtree_to_test_tree behind a method, to get bound self
346
        scenario_options["_workingtree_to_test_tree"] = converter
3363.1.1 by Aaron Bentley
Refactor intertree scenario creation
347
        return name, scenario_options
1852.6.1 by Robert Collins
Start tree implementation tests.
348
349
3302.9.15 by Vincent Ladeuil
bzrlib.tests.tree_implementations switched from test_suite() to
350
def load_tests(basic_tests, module, loader):
351
    result = loader.suiteClass()
352
    # add the tests for this module
353
    result.addTests(basic_tests)
354
1852.6.1 by Robert Collins
Start tree implementation tests.
355
    test_tree_implementations = [
3224.1.28 by John Arbash Meinel
Add some direct tests for Tree.annotate_iter
356
        'bzrlib.tests.tree_implementations.test_annotate_iter',
2255.7.36 by John Arbash Meinel
All trees should implement get_file_mtime()
357
        'bzrlib.tests.tree_implementations.test_get_file_mtime',
2946.3.2 by John Arbash Meinel
Add tree implementation tests for Tree.get_root_id()
358
        'bzrlib.tests.tree_implementations.test_get_root_id',
2255.2.134 by John Arbash Meinel
Add a tree-test for get_symlink_target
359
        'bzrlib.tests.tree_implementations.test_get_symlink_target',
2338.4.6 by Marien Zwart
Move some tests that do not need a working tree from workingtree_implementations to tree_implementations.
360
        'bzrlib.tests.tree_implementations.test_inv',
3398.1.24 by Ian Clatworthy
make iter_search_rules a tree method
361
        'bzrlib.tests.tree_implementations.test_iter_search_rules',
2255.2.71 by John Arbash Meinel
Add a test for list_files, and implement it for DirStateRevisionTree
362
        'bzrlib.tests.tree_implementations.test_list_files',
2776.1.7 by Robert Collins
* New method on ``bzrlib.tree.Tree`` ``path_content_summary`` provides a
363
        'bzrlib.tests.tree_implementations.test_path_content_summary',
1908.11.5 by John Arbash Meinel
[merge] bzr.dev 2240
364
        'bzrlib.tests.tree_implementations.test_revision_tree',
1852.6.1 by Robert Collins
Start tree implementation tests.
365
        'bzrlib.tests.tree_implementations.test_test_trees',
1551.9.16 by Aaron Bentley
Implement Tree.annotate_iter for RevisionTree and WorkingTree
366
        'bzrlib.tests.tree_implementations.test_tree',
1852.15.3 by Robert Collins
Add a first-cut Tree.walkdirs method.
367
        'bzrlib.tests.tree_implementations.test_walkdirs',
1852.6.1 by Robert Collins
Start tree implementation tests.
368
        ]
3302.9.15 by Vincent Ladeuil
bzrlib.tests.tree_implementations switched from test_suite() to
369
1852.6.1 by Robert Collins
Start tree implementation tests.
370
    adapter = TreeTestProviderAdapter(
371
        default_transport,
372
        # None here will cause a readonly decorator to be created
373
        # by the TestCaseWithTransport.get_readonly_transport method.
374
        None,
3543.1.1 by Michael Hudson
change the scenario multiplication to get the bzrdir format from the tree and
375
        WorkingTreeFormat._formats.values() + _legacy_formats)
3302.9.15 by Vincent Ladeuil
bzrlib.tests.tree_implementations switched from test_suite() to
376
3302.9.27 by Vincent Ladeuil
Fixed as per Ian's review.
377
    # add the tests for the sub modules
1852.6.1 by Robert Collins
Start tree implementation tests.
378
    adapt_modules(test_tree_implementations, adapter, loader, result)
379
    return result