1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# Copyright (C) 2006-2010 Canonical Ltd
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
"""WorkingTree implementation tests for bzr.
This test the conformance of all the workingtre variations to the expected API.
Specific tests for individual formats are in the tests/test_workingtree file
rather than in tests/per_workingtree/*.py.
"""
from bzrlib import (
branchbuilder,
errors,
tests,
workingtree,
)
from bzrlib.tests import per_controldir
def make_scenarios(transport_server, transport_readonly_server, formats):
result = []
for workingtree_format in formats:
result.append((workingtree_format.__class__.__name__,
make_scenario(transport_server,
transport_readonly_server,
workingtree_format)))
return result
def make_scenario(transport_server, transport_readonly_server,
workingtree_format):
return {
"transport_server": transport_server,
"transport_readonly_server": transport_readonly_server,
"bzrdir_format": workingtree_format._matchingbzrdir,
"workingtree_format": workingtree_format,
}
class TestCaseWithWorkingTree(per_controldir.TestCaseWithControlDir):
def make_branch_and_tree(self, relpath, format=None):
made_control = self.make_bzrdir(relpath, format=format)
made_control.create_repository()
made_control.create_branch()
return self.workingtree_format.initialize(made_control)
def make_branch_builder(self, relpath, format=None):
if format is None:
format = self.bzrdir_format
builder = branchbuilder.BranchBuilder(self.get_transport(),
format=format)
return builder
def workingtree_formats():
"""The known working tree formats."""
return (workingtree.WorkingTreeFormat._formats.values() +
workingtree._legacy_formats)
def load_tests(standard_tests, module, loader):
test_names = [
'add_reference',
'add',
'annotate_iter',
'basis_inventory',
'basis_tree',
'break_lock',
'changes_from',
'check',
'content_filters',
'commit',
'eol_conversion',
'executable',
'flush',
'get_file_mtime',
'get_parent_ids',
'inv',
'is_control_filename',
'is_ignored',
'locking',
'merge_from_branch',
'mkdir',
'move',
'nested_specifics',
'parents',
'paths2ids',
'pull',
'put_file',
'readonly',
'read_working_inventory',
'remove',
'rename_one',
'revision_tree',
'set_root_id',
'smart_add',
'symlinks',
'uncommit',
'unversion',
'views',
'walkdirs',
'workingtree',
]
test_workingtree_implementations = [
'bzrlib.tests.per_workingtree.test_' + name for
name in test_names]
scenarios = make_scenarios(
tests.default_transport,
# None here will cause a readonly decorator to be created
# by the TestCaseWithTransport.get_readonly_transport method.
None,
workingtree_formats()
)
# add the tests for the sub modules
return tests.multiply_tests(
loader.loadTestsFromModuleNames(test_workingtree_implementations),
scenarios, standard_tests)
|