23
26
class TestWalkdirs(TestCaseWithTree):
25
28
def get_all_subdirs_expected(self, tree, symlinks):
30
(('', tree.path2id('')),
31
[('0file', '0file', 'file', None, '2file', 'file'),
32
('1top-dir', '1top-dir', 'directory', None,
33
'1top-dir', 'directory'),
34
(u'2utf\u1234file', u'2utf\u1234file', 'file', None,
35
u'0utf\u1234file'.encode('utf8'), 'file'),
37
(('1top-dir', '1top-dir'),
38
[('1top-dir/0file-in-1topdir', '0file-in-1topdir',
39
'file', None, '1file-in-1topdir', 'file'),
40
('1top-dir/1dir-in-1topdir', '1dir-in-1topdir',
41
'directory', None, '0dir-in-1topdir', 'directory'),
43
(('1top-dir/1dir-in-1topdir', '0dir-in-1topdir'),
28
(('', tree.path2id('')),
30
('0file', '0file', 'file', None, '2file', 'file'),
31
('1top-dir', '1top-dir', 'directory', None, '1top-dir', 'directory'),
32
(u'2utf\u1234file', u'2utf\u1234file', 'file', None,
33
u'0utf\u1234file'.encode('utf8'), 'file'),
34
('symlink', 'symlink', 'symlink', None, 'symlink', 'symlink')
36
(('1top-dir', '1top-dir'),
37
[('1top-dir/0file-in-1topdir', '0file-in-1topdir', 'file', None, '1file-in-1topdir', 'file'),
38
('1top-dir/1dir-in-1topdir', '1dir-in-1topdir', 'directory', None, '0dir-in-1topdir', 'directory'),
40
(('1top-dir/1dir-in-1topdir', '0dir-in-1topdir'),
46
(('', tree.path2id('')),
48
('0file', '0file', 'file', None, '2file', 'file'),
49
('1top-dir', '1top-dir', 'directory', None, '1top-dir', 'directory'),
50
(u'2utf\u1234file', u'2utf\u1234file', 'file', None,
51
u'0utf\u1234file'.encode('utf8'), 'file'),
53
(('1top-dir', '1top-dir'),
54
[('1top-dir/0file-in-1topdir', '0file-in-1topdir', 'file', None, '1file-in-1topdir', 'file'),
55
('1top-dir/1dir-in-1topdir', '1dir-in-1topdir', 'directory', None, '0dir-in-1topdir', 'directory'),
57
(('1top-dir/1dir-in-1topdir', '0dir-in-1topdir'),
47
dirblocks[0][1].append(('symlink', 'symlink', 'symlink', None,
48
'symlink', 'symlink'))
62
51
def test_walkdir_root(self):
63
tree = self.get_tree_with_subdirs_and_all_supported_content_types(has_symlinks())
52
tree = self.get_tree_with_subdirs_and_all_supported_content_types(
65
55
expected_dirblocks = self.get_all_subdirs_expected(tree, has_symlinks())
66
56
# test that its iterable by iterating
98
88
for pos, item in enumerate(expected_dirblocks):
99
89
self.assertEqual(item, result[pos])
100
90
self.assertEqual(len(expected_dirblocks), len(result))
92
def test_walkdir_versioned_kind(self):
93
work_tree = self.make_branch_and_tree('tree')
94
work_tree.set_root_id('tree-root')
95
self.build_tree(['tree/file', 'tree/dir/'])
96
work_tree.add(['file', 'dir'], ['file-id', 'dir-id'])
97
os.unlink('tree/file')
99
tree = self._convert_tree(work_tree)
101
self.addCleanup(tree.unlock)
102
if tree.path2id('file') is None:
103
raise tests.TestNotApplicable(
104
'Tree type cannot represent dangling ids.')
105
expected = [(('', 'tree-root'), [
106
('dir', 'dir', 'unknown', None, 'dir-id', 'directory'),
107
('file', 'file', 'unknown', None, 'file-id', 'file')]),
108
(('dir', 'dir-id'), [])]
109
self.assertEqual(expected, list(tree.walkdirs()))