/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/per_workingtree/test_walkdirs.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-08-23 01:15:41 UTC
  • mfrom: (7520.1.4 merge-3.1)
  • Revision ID: breezy.the.bot@gmail.com-20200823011541-nv0oh7nzaganx2qy
Merge lp:brz/3.1.

Merged from https://code.launchpad.net/~jelmer/brz/merge-3.1/+merge/389690

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
class DirBlock:
29
29
    """Object representation of the tuples returned by dirstate."""
30
30
 
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
41
 
        self.id = id
42
41
        self.inventory_kind = inventory_kind
43
42
        self.stat = stat
44
43
        self.disk_kind = disk_kind
45
44
 
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)
49
48
 
50
49
    def as_dir_tuple(self):
51
 
        return (self.relpath, self.id)
 
50
        return self.relpath
52
51
 
53
52
    def __str__(self):
54
53
        return """
56
55
abspath        = %r
57
56
relpath        = %r
58
57
file_name      = %r
59
 
id             = %r
60
58
inventory_kind = %r
61
59
stat           = %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,
64
62
                          self.disk_kind)
65
63
 
66
64
 
97
95
 
98
96
        if file_status != self.unknown:
99
97
            tree.add(paths)
100
 
            for dirblock in dirblocks:
101
 
                if file_status != self.unknown:
102
 
                    dirblock.id = tree.path2id(dirblock.relpath)
103
98
 
104
99
        if file_status == self.missing:
105
100
            # now make the files be missing
108
103
            tree.controldir.root_transport.delete_tree(dirblocks[3].relpath)
109
104
 
110
105
        expected_dirblocks = [
111
 
            (('', tree.path2id('')),
 
106
            ('',
112
107
             [dirblocks[1].as_tuple()] +
113
108
             ([dirblocks[3].as_tuple()]
114
109
                 if (tree.has_versioned_directories() or file_status == self.unknown) else []) +
120
115
            ]
121
116
        if (tree.has_versioned_directories() or
122
117
                file_status != self.missing):
123
 
            expected_dirblocks.append(
124
 
                (dirblocks[3].as_dir_tuple(),
125
 
                 []
126
 
                 ))
 
118
            expected_dirblocks.append((dirblocks[3].as_dir_tuple(), []))
127
119
        if prefix:
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
131
123
 
132
124
    def _test_walkdir(self, file_status, prefix=""):
133
125
        result = []
134
126
        tree, expected_dirblocks = self.get_tree(file_status, prefix)
135
 
        tree.lock_read()
136
 
        for dirinfo, dirblock in tree.walkdirs(prefix):
137
 
            result.append((dirinfo, list(dirblock)))
138
 
        tree.unlock()
 
127
        with tree.lock_read():
 
128
            for dirpath, dirblock in tree.walkdirs(prefix):
 
129
                result.append((dirpath, list(dirblock)))
139
130
 
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'),
 
194
            ('',
 
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'),
 
200
               'file'),
 
201
              ('file2', 'file2', 'symlink', file2_stat, 'file'),
 
202
              ('link1', 'link1', 'file', link1_stat, 'symlink'),
 
203
              ('link2', 'link2', 'directory', link2_stat, 'symlink'),
216
204
              ]
217
205
             )]
218
206
        if tree.has_versioned_directories():
219
207
            expected_dirblocks.extend([
220
 
                (('dir1', tree.path2id('dir1')),
221
 
                 [
222
 
                    ]
223
 
                 ),
224
 
                (('dir2', tree.path2id('dir2')),
225
 
                    [
226
 
                    ]
227
 
                 )])
 
208
                ('dir1', []),
 
209
                ('dir2', [])])
228
210
        expected_dirblocks.extend([
229
 
            (('file1', None),
230
 
             [
231
 
                ]
232
 
             ),
233
 
            (('link2', None),
234
 
             [
235
 
                ]
236
 
             ),
 
211
            ('file1', []),
 
212
            ('link2', []),
237
213
            ])
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'),
264
 
                  ]
265
 
                 ),
266
 
                (('dir1', tree.path2id('dir1')),
267
 
                 [
268
 
                    ]
269
 
                 ),
270
 
                (('file1', None),
271
 
                 [
272
 
                    ]
273
 
                 ),
 
236
                ('',
 
237
                 [('dir1', 'dir1', 'file', dir1_stat, 'directory'),
 
238
                  ('file1', 'file1', 'directory', file1_stat, 'file'),
 
239
                 ]),
 
240
                ('dir1', []),
 
241
                ('file1', []),
274
242
                ]
275
243
        else:
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'),
 
245
                ('',
 
246
                 [('dir1', 'dir1', 'file', dir1_stat, None),
 
247
                  ('file1', 'file1', 'directory', file1_stat, 'file'),
281
248
                  ]
282
249
                 ),
283
 
                (('file1', None),
284
 
                 [
285
 
                    ]
286
 
                 ),
 
250
                ('file1', []),
287
251
                ]
288
252
        with tree.lock_read():
289
253
            result = list(tree.walkdirs())