/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: Jelmer Vernooij
  • Date: 2018-04-02 00:52:27 UTC
  • mfrom: (6939 work)
  • mto: This revision was merged to the branch mainline in revision 7274.
  • Revision ID: jelmer@jelmer.uk-20180402005227-pecflp1mvdjrjqd6
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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')
98
97
 
99
98
        if file_status != self.unknown:
100
 
            tree.add(paths, [db.id for db in dirblocks])
 
99
            tree.add(paths)
 
100
            for dirblock in dirblocks:
 
101
                if file_status != self.unknown:
 
102
                    dirblock.id = tree.path2id(dirblock.relpath)
101
103
 
102
104
        if file_status == self.missing:
103
105
            # now make the files be missing
107
109
 
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()]
112
115
            ),
113
116
            (dirblocks[1].as_dir_tuple(),
114
117
             [dirblocks[2].as_tuple()]
115
118
            ),
116
 
            (dirblocks[3].as_dir_tuple(),
117
 
             []
118
 
            ),
119
119
            ]
 
120
        if (tree.has_versioned_directories() or
 
121
            file_status != self.missing):
 
122
            expected_dirblocks.append(
 
123
                (dirblocks[3].as_dir_tuple(),
 
124
                 []
 
125
                ))
120
126
        if prefix:
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)
172
 
        tree.add(paths, ids)
 
177
        tree.add(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'),
204
 
              ]
205
 
             ),
206
 
             (('dir1', 'dir1'),
207
 
              [
208
 
              ]
209
 
             ),
210
 
             (('dir2', 'dir2'),
211
 
              [
212
 
              ]
213
 
             ),
 
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'),
 
211
              ]
 
212
             )]
 
213
        if tree.has_versioned_directories():
 
214
            expected_dirblocks.extend([
 
215
             (('dir1', tree.path2id('dir1')),
 
216
              [
 
217
              ]
 
218
             ),
 
219
             (('dir2', tree.path2id('dir2')),
 
220
              [
 
221
              ]
 
222
             )])
 
223
        expected_dirblocks.extend([
214
224
             (('file1', None),
215
225
              [
216
226
              ]
219
229
              [
220
230
              ]
221
231
             ),
222
 
            ]
223
 
        tree.lock_read()
224
 
        result = list(tree.walkdirs())
225
 
        tree.unlock()
 
232
            ])
 
233
        with tree.lock_read():
 
234
            result = list(tree.walkdirs())
226
235
        # check each return value for debugging ease.
227
236
        for pos, item in enumerate(expected_dirblocks):
228
237
            self.assertEqual(item, result[pos])
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)
238
 
        tree.add(paths, ids)
 
246
        tree.add(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'),
249
 
              ]
250
 
             ),
251
 
             (('dir1', 'dir1'),
252
 
              [
253
 
              ]
254
 
             ),
255
 
             (('file1', None),
256
 
              [
257
 
              ]
258
 
             ),
259
 
            ]
260
 
        tree.lock_read()
261
 
        result = list(tree.walkdirs())
262
 
        tree.unlock()
 
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'),
 
258
                  ]
 
259
                 ),
 
260
                 (('dir1', tree.path2id('dir1')),
 
261
                  [
 
262
                  ]
 
263
                 ),
 
264
                 (('file1', None),
 
265
                  [
 
266
                  ]
 
267
                 ),
 
268
                ]
 
269
        else:
 
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'),
 
274
                  ]
 
275
                 ),
 
276
                 (('file1', None),
 
277
                  [
 
278
                  ]
 
279
                 ),
 
280
                ]
 
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])