29
29
"""Object representation of the tuples returned by dirstate."""
31
def __init__(self, tree, file_path, file_name=None, id=None,
31
def __init__(self, tree, file_path, file_name=None,
32
32
inventory_kind=None, stat=None, disk_kind='unknown'):
33
33
self.file_path = file_path
34
34
self.abspath = tree.abspath(file_path)
38
38
if len(file_name) == 0:
39
39
file_name = os.path.split(file_path)[-2]
40
40
self.file_name = file_name
42
41
self.inventory_kind = inventory_kind
44
43
self.disk_kind = disk_kind
46
45
def as_tuple(self):
47
46
return (self.relpath, self.file_name, self.disk_kind,
48
self.stat, self.id, self.inventory_kind)
47
self.stat, self.inventory_kind)
50
49
def as_dir_tuple(self):
51
return (self.relpath, self.id)
60
58
inventory_kind = %r
62
60
disk_kind = %r""" % (self.file_path, self.abspath, self.relpath,
63
self.file_name, self.id, self.inventory_kind, self.stat,
61
self.file_name, self.inventory_kind, self.stat,
121
116
if (tree.has_versioned_directories() or
122
117
file_status != self.missing):
123
expected_dirblocks.append(
124
(dirblocks[3].as_dir_tuple(),
118
expected_dirblocks.append((dirblocks[3].as_dir_tuple(), []))
128
120
expected_dirblocks = [e for e in expected_dirblocks
129
if len(e) > 0 and len(e[0]) > 0 and e[0][0] == prefix]
121
if len(e) > 0 and len(e[0]) > 0 and e[0] == prefix]
130
122
return tree, expected_dirblocks
132
124
def _test_walkdir(self, file_status, prefix=""):
134
126
tree, expected_dirblocks = self.get_tree(file_status, prefix)
136
for dirinfo, dirblock in tree.walkdirs(prefix):
137
result.append((dirinfo, list(dirblock)))
127
with tree.lock_read():
128
for dirpath, dirblock in tree.walkdirs(prefix):
129
result.append((dirpath, list(dirblock)))
140
131
# check each return value for debugging ease.
141
132
for pos, item in enumerate(expected_dirblocks):
200
191
link1_stat = os.lstat('link1')
201
192
link2_stat = os.lstat('link2')
202
193
expected_dirblocks = [
203
(('', tree.path2id('')),
204
[('dir1', 'dir1', 'file', dir1_stat, tree.path2id('dir1'),
195
[('dir1', 'dir1', 'file', dir1_stat,
205
196
'directory' if tree.has_versioned_directories() else None),
206
('dir2', 'dir2', 'symlink', dir2_stat, tree.path2id('dir2'),
197
('dir2', 'dir2', 'symlink', dir2_stat,
207
198
'directory' if tree.has_versioned_directories() else None),
208
199
('file1', 'file1', 'directory', file1_stat,
209
tree.path2id('file1'), 'file'),
210
('file2', 'file2', 'symlink', file2_stat,
211
tree.path2id('file2'), 'file'),
212
('link1', 'link1', 'file', link1_stat,
213
tree.path2id('link1'), 'symlink'),
214
('link2', 'link2', 'directory', link2_stat,
215
tree.path2id('link2'), 'symlink'),
201
('file2', 'file2', 'symlink', file2_stat, 'file'),
202
('link1', 'link1', 'file', link1_stat, 'symlink'),
203
('link2', 'link2', 'directory', link2_stat, 'symlink'),
218
206
if tree.has_versioned_directories():
219
207
expected_dirblocks.extend([
220
(('dir1', tree.path2id('dir1')),
224
(('dir2', tree.path2id('dir2')),
228
210
expected_dirblocks.extend([
238
214
with tree.lock_read():
239
215
result = list(tree.walkdirs())
257
233
file1_stat = os.lstat('file1')
258
234
if tree.has_versioned_directories():
259
235
expected_dirblocks = [
260
(('', tree.path2id('')),
261
[('dir1', 'dir1', 'file', dir1_stat, tree.path2id('dir1'), 'directory'),
262
('file1', 'file1', 'directory', file1_stat,
263
tree.path2id('file1'), 'file'),
266
(('dir1', tree.path2id('dir1')),
237
[('dir1', 'dir1', 'file', dir1_stat, 'directory'),
238
('file1', 'file1', 'directory', file1_stat, 'file'),
276
244
expected_dirblocks = [
277
(('', tree.path2id('')),
278
[('dir1', 'dir1', 'file', dir1_stat, tree.path2id('dir1'), None),
279
('file1', 'file1', 'directory', file1_stat,
280
tree.path2id('file1'), 'file'),
246
[('dir1', 'dir1', 'file', dir1_stat, None),
247
('file1', 'file1', 'directory', file1_stat, 'file'),
288
252
with tree.lock_read():
289
253
result = list(tree.walkdirs())