84
84
def add_dirblock(path, kind):
85
85
dirblock = DirBlock(tree, path)
86
86
if file_status != self.unknown:
87
dirblock.id = 'a ' + str(path).replace('/','-') + '-id'
88
87
dirblock.inventory_kind = kind
89
88
if file_status != self.missing:
90
89
dirblock.disk_kind = kind
97
96
add_dirblock(paths[3], 'directory')
99
98
if file_status != self.unknown:
100
tree.add(paths, [db.id for db in dirblocks])
100
for dirblock in dirblocks:
101
if file_status != self.unknown:
102
dirblock.id = tree.path2id(dirblock.relpath)
102
104
if file_status == self.missing:
103
105
# now make the files be missing
108
110
expected_dirblocks = [
109
111
(('', tree.path2id('')),
110
[dirblocks[1].as_tuple(), dirblocks[3].as_tuple(),
111
dirblocks[0].as_tuple()]
112
([dirblocks[1].as_tuple(), dirblocks[3].as_tuple()]
113
if (tree.has_versioned_directories() or file_status != self.missing) else []) +
114
[dirblocks[0].as_tuple()]
113
116
(dirblocks[1].as_dir_tuple(),
114
117
[dirblocks[2].as_tuple()]
116
(dirblocks[3].as_dir_tuple(),
120
if (tree.has_versioned_directories() or
121
file_status != self.missing):
122
expected_dirblocks.append(
123
(dirblocks[3].as_dir_tuple(),
121
127
expected_dirblocks = [e for e in expected_dirblocks
122
128
if len(e) > 0 and len(e[0]) > 0 and e[0][0] == prefix]
167
173
self.requireFeature(SymlinkFeature)
168
174
tree = self.make_branch_and_tree('.')
169
175
paths = ['file1', 'file2', 'dir1/', 'dir2/']
170
ids = ['file1', 'file2', 'dir1', 'dir2']
171
176
self.build_tree(paths)
173
178
tt = transform.TreeTransform(tree)
174
179
root_transaction_id = tt.trans_id_tree_path('')
175
180
tt.new_symlink('link1',
195
200
link2_stat = os.lstat('link2')
196
201
expected_dirblocks = [
197
202
(('', tree.path2id('')),
198
[('dir1', 'dir1', 'file', dir1_stat, 'dir1', 'directory'),
199
('dir2', 'dir2', 'symlink', dir2_stat, 'dir2', 'directory'),
200
('file1', 'file1', 'directory', file1_stat, 'file1', 'file'),
201
('file2', 'file2', 'symlink', file2_stat, 'file2', 'file'),
202
('link1', 'link1', 'file', link1_stat, 'link1', 'symlink'),
203
('link2', 'link2', 'directory', link2_stat, 'link2', 'symlink'),
203
[('dir1', 'dir1', 'file', dir1_stat, tree.path2id('dir1'),
204
'directory' if tree.has_versioned_directories() else None),
205
('dir2', 'dir2', 'symlink', dir2_stat, tree.path2id('dir2'),
206
'directory' if tree.has_versioned_directories() else None),
207
('file1', 'file1', 'directory', file1_stat, tree.path2id('file1'), 'file'),
208
('file2', 'file2', 'symlink', file2_stat, tree.path2id('file2'), 'file'),
209
('link1', 'link1', 'file', link1_stat, tree.path2id('link1'), 'symlink'),
210
('link2', 'link2', 'directory', link2_stat, tree.path2id('link2'), 'symlink'),
213
if tree.has_versioned_directories():
214
expected_dirblocks.extend([
215
(('dir1', tree.path2id('dir1')),
219
(('dir2', tree.path2id('dir2')),
223
expected_dirblocks.extend([
214
224
(('file1', None),
233
242
# but don't use symlinks for safe testing on win32
234
243
tree = self.make_branch_and_tree('.')
235
244
paths = ['file1', 'dir1/']
236
ids = ['file1', 'dir1']
237
245
self.build_tree(paths)
239
247
tree.controldir.root_transport.delete_tree('dir1')
240
248
tree.controldir.root_transport.delete('file1')
241
249
changed_paths = ['dir1', 'file1/']
242
250
self.build_tree(changed_paths)
243
251
dir1_stat = os.lstat('dir1')
244
252
file1_stat = os.lstat('file1')
245
expected_dirblocks = [
246
(('', tree.path2id('')),
247
[('dir1', 'dir1', 'file', dir1_stat, 'dir1', 'directory'),
248
('file1', 'file1', 'directory', file1_stat, 'file1', 'file'),
261
result = list(tree.walkdirs())
253
if tree.has_versioned_directories():
254
expected_dirblocks = [
255
(('', tree.path2id('')),
256
[('dir1', 'dir1', 'file', dir1_stat, tree.path2id('dir1'), 'directory'),
257
('file1', 'file1', 'directory', file1_stat, tree.path2id('file1'), 'file'),
260
(('dir1', tree.path2id('dir1')),
270
expected_dirblocks = [
271
(('', tree.path2id('')),
272
[('dir1', 'dir1', 'file', dir1_stat, tree.path2id('dir1'), None),
273
('file1', 'file1', 'directory', file1_stat, tree.path2id('file1'), 'file'),
281
with tree.lock_read():
282
result = list(tree.walkdirs())
263
283
# check each return value for debugging ease.
264
284
for pos, item in enumerate(expected_dirblocks):
265
285
self.assertEqual(item, result[pos])