246
246
def test_simple_stepping(self):
247
247
tree = self.make_branch_and_tree('tree')
248
248
self.build_tree(['tree/a', 'tree/b/', 'tree/b/c'])
249
tree.add(['a', 'b', 'b/c'], ['a-id', 'b-id', 'c-id'])
249
tree.add(['a', 'b', 'b/c'], [b'a-id', b'b-id', b'c-id'])
251
tree.commit('first', rev_id='first-rev-id')
251
tree.commit('first', rev_id=b'first-rev-id')
253
253
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
255
255
walker = _mod_tree.MultiWalker(tree, [basis_tree])
256
256
iterator = walker.iter_all()
257
257
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
258
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
259
self.assertWalkerNext(u'b', 'b-id', True, [u'b'], iterator)
260
self.assertWalkerNext(u'b/c', 'c-id', True, [u'b/c'], iterator)
258
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
259
self.assertWalkerNext(u'b', b'b-id', True, [u'b'], iterator)
260
self.assertWalkerNext(u'b/c', b'c-id', True, [u'b/c'], iterator)
261
261
self.assertRaises(StopIteration, next, iterator)
263
263
def test_master_has_extra(self):
264
264
tree = self.make_branch_and_tree('tree')
265
265
self.build_tree(['tree/a', 'tree/b/', 'tree/c', 'tree/d'])
266
tree.add(['a', 'b', 'd'], ['a-id', 'b-id', 'd-id'])
268
tree.commit('first', rev_id='first-rev-id')
270
tree.add(['c'], ['c-id'])
266
tree.add(['a', 'b', 'd'], [b'a-id', b'b-id', b'd-id'])
268
tree.commit('first', rev_id=b'first-rev-id')
270
tree.add(['c'], [b'c-id'])
271
271
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
273
273
walker = _mod_tree.MultiWalker(tree, [basis_tree])
274
274
iterator = walker.iter_all()
275
275
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
276
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
277
self.assertWalkerNext(u'b', 'b-id', True, [u'b'], iterator)
278
self.assertWalkerNext(u'c', 'c-id', True, [None], iterator)
279
self.assertWalkerNext(u'd', 'd-id', True, [u'd'], iterator)
276
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
277
self.assertWalkerNext(u'b', b'b-id', True, [u'b'], iterator)
278
self.assertWalkerNext(u'c', b'c-id', True, [None], iterator)
279
self.assertWalkerNext(u'd', b'd-id', True, [u'd'], iterator)
280
280
self.assertRaises(StopIteration, next, iterator)
282
282
def test_master_renamed_to_earlier(self):
283
283
"""The record is still present, it just shows up early."""
284
284
tree = self.make_branch_and_tree('tree')
285
285
self.build_tree(['tree/a', 'tree/c', 'tree/d'])
286
tree.add(['a', 'c', 'd'], ['a-id', 'c-id', 'd-id'])
287
tree.commit('first', rev_id='first-rev-id')
286
tree.add(['a', 'c', 'd'], [b'a-id', b'c-id', b'd-id'])
287
tree.commit('first', rev_id=b'first-rev-id')
288
288
tree.rename_one('d', 'b')
290
290
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
309
309
walker = _mod_tree.MultiWalker(tree, [basis_tree])
310
310
iterator = walker.iter_all()
311
311
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
312
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
313
self.assertWalkerNext(u'd', 'd-id', True, [u'd'], iterator)
314
self.assertWalkerNext(u'e', 'b-id', True, [u'b'], iterator)
312
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
313
self.assertWalkerNext(u'd', b'd-id', True, [u'd'], iterator)
314
self.assertWalkerNext(u'e', b'b-id', True, [u'b'], iterator)
315
315
self.assertRaises(StopIteration, next, iterator)
317
317
def test_other_extra_in_middle(self):
318
318
tree = self.make_branch_and_tree('tree')
319
319
self.build_tree(['tree/a', 'tree/b', 'tree/d'])
320
tree.add(['a', 'b', 'd'], ['a-id', 'b-id', 'd-id'])
321
tree.commit('first', rev_id='first-rev-id')
320
tree.add(['a', 'b', 'd'], [b'a-id', b'b-id', b'd-id'])
321
tree.commit('first', rev_id=b'first-rev-id')
322
322
tree.remove(['b'])
324
324
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
325
325
walker = _mod_tree.MultiWalker(tree, [basis_tree])
326
326
iterator = walker.iter_all()
327
327
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
328
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
329
self.assertWalkerNext(u'd', 'd-id', True, [u'd'], iterator)
330
self.assertWalkerNext(u'b', 'b-id', False, [u'b'], iterator)
328
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
329
self.assertWalkerNext(u'd', b'd-id', True, [u'd'], iterator)
330
self.assertWalkerNext(u'b', b'b-id', False, [u'b'], iterator)
331
331
self.assertRaises(StopIteration, next, iterator)
333
333
def test_other_extra_at_end(self):
334
334
tree = self.make_branch_and_tree('tree')
335
335
self.build_tree(['tree/a', 'tree/b', 'tree/d'])
336
tree.add(['a', 'b', 'd'], ['a-id', 'b-id', 'd-id'])
337
tree.commit('first', rev_id='first-rev-id')
336
tree.add(['a', 'b', 'd'], [b'a-id', b'b-id', b'd-id'])
337
tree.commit('first', rev_id=b'first-rev-id')
338
338
tree.remove(['d'])
340
340
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
341
341
walker = _mod_tree.MultiWalker(tree, [basis_tree])
342
342
iterator = walker.iter_all()
343
343
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
344
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
345
self.assertWalkerNext(u'b', 'b-id', True, [u'b'], iterator)
346
self.assertWalkerNext(u'd', 'd-id', False, [u'd'], iterator)
344
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
345
self.assertWalkerNext(u'b', b'b-id', True, [u'b'], iterator)
346
self.assertWalkerNext(u'd', b'd-id', False, [u'd'], iterator)
347
347
self.assertRaises(StopIteration, next, iterator)
349
349
def test_others_extra_at_end(self):
350
350
tree = self.make_branch_and_tree('tree')
351
351
self.build_tree(['tree/a', 'tree/b', 'tree/c', 'tree/d', 'tree/e'])
352
352
tree.add(['a', 'b', 'c', 'd', 'e'],
353
['a-id', 'b-id', 'c-id', 'd-id', 'e-id'])
354
tree.commit('first', rev_id='first-rev-id')
353
[b'a-id', b'b-id', b'c-id', b'd-id', b'e-id'])
354
tree.commit('first', rev_id=b'first-rev-id')
355
355
tree.remove(['e'])
356
tree.commit('second', rev_id='second-rev-id')
356
tree.commit('second', rev_id=b'second-rev-id')
357
357
tree.remove(['d'])
358
tree.commit('third', rev_id='third-rev-id')
358
tree.commit('third', rev_id=b'third-rev-id')
359
359
tree.remove(['c'])
361
361
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
362
first_tree = tree.branch.repository.revision_tree('first-rev-id')
363
second_tree = tree.branch.repository.revision_tree('second-rev-id')
362
first_tree = tree.branch.repository.revision_tree(b'first-rev-id')
363
second_tree = tree.branch.repository.revision_tree(b'second-rev-id')
364
364
walker = _mod_tree.MultiWalker(tree, [basis_tree, first_tree,
366
366
iterator = walker.iter_all()
367
367
self.assertWalkerNext(u'', root_id, True, [u'', u'', u''], iterator)
368
self.assertWalkerNext(u'a', 'a-id', True, [u'a', u'a', u'a'], iterator)
369
self.assertWalkerNext(u'b', 'b-id', True, [u'b', u'b', u'b'], iterator)
370
self.assertWalkerNext(u'c', 'c-id', False, [u'c', u'c', u'c'], iterator)
371
self.assertWalkerNext(u'd', 'd-id', False, [None, u'd', u'd'], iterator)
372
self.assertWalkerNext(u'e', 'e-id', False, [None, u'e', None], iterator)
368
self.assertWalkerNext(u'a', b'a-id', True, [u'a', u'a', u'a'], iterator)
369
self.assertWalkerNext(u'b', b'b-id', True, [u'b', u'b', u'b'], iterator)
370
self.assertWalkerNext(u'c', b'c-id', False, [u'c', u'c', u'c'], iterator)
371
self.assertWalkerNext(u'd', b'd-id', False, [None, u'd', u'd'], iterator)
372
self.assertWalkerNext(u'e', b'e-id', False, [None, u'e', None], iterator)
373
373
self.assertRaises(StopIteration, next, iterator)
375
375
def test_different_file_id_in_others(self):
376
376
tree = self.make_branch_and_tree('tree')
377
377
self.build_tree(['tree/a', 'tree/b', 'tree/c/'])
378
tree.add(['a', 'b', 'c'], ['a-id', 'b-id', 'c-id'])
379
tree.commit('first', rev_id='first-rev-id')
378
tree.add(['a', 'b', 'c'], [b'a-id', b'b-id', b'c-id'])
379
tree.commit('first', rev_id=b'first-rev-id')
381
381
tree.rename_one('b', 'c/d')
382
382
self.build_tree(['tree/b'])
383
tree.add(['b'], ['b2-id'])
384
tree.commit('second', rev_id='second-rev-id')
383
tree.add(['b'], [b'b2-id'])
384
tree.commit('second', rev_id=b'second-rev-id')
386
386
tree.rename_one('a', 'c/e')
387
387
self.build_tree(['tree/a'])
388
tree.add(['a'], ['a2-id'])
388
tree.add(['a'], [b'a2-id'])
390
390
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
391
first_tree = tree.branch.repository.revision_tree('first-rev-id')
391
first_tree = tree.branch.repository.revision_tree(b'first-rev-id')
392
392
walker = _mod_tree.MultiWalker(tree, [basis_tree, first_tree])
394
394
iterator = walker.iter_all()
395
395
self.assertWalkerNext(u'', root_id, True, [u'', u''], iterator)
396
self.assertWalkerNext(u'a', 'a2-id', True, [None, None], iterator)
397
self.assertWalkerNext(u'b', 'b2-id', True, [u'b', None], iterator)
398
self.assertWalkerNext(u'c', 'c-id', True, [u'c', u'c'], iterator)
399
self.assertWalkerNext(u'c/d', 'b-id', True, [u'c/d', u'b'], iterator)
400
self.assertWalkerNext(u'c/e', 'a-id', True, [u'a', u'a'], iterator)
396
self.assertWalkerNext(u'a', b'a2-id', True, [None, None], iterator)
397
self.assertWalkerNext(u'b', b'b2-id', True, [u'b', None], iterator)
398
self.assertWalkerNext(u'c', b'c-id', True, [u'c', u'c'], iterator)
399
self.assertWalkerNext(u'c/d', b'b-id', True, [u'c/d', u'b'], iterator)
400
self.assertWalkerNext(u'c/e', b'a-id', True, [u'a', u'a'], iterator)
401
401
self.assertRaises(StopIteration, next, iterator)
403
403
def assertCmpByDirblock(self, cmp_val, path1, path2):