247
232
def test_simple_stepping(self):
248
233
tree = self.make_branch_and_tree('tree')
249
234
self.build_tree(['tree/a', 'tree/b/', 'tree/b/c'])
250
tree.add(['a', 'b', 'b/c'], [b'a-id', b'b-id', b'c-id'])
235
tree.add(['a', 'b', 'b/c'], ['a-id', 'b-id', 'c-id'])
252
tree.commit('first', rev_id=b'first-rev-id')
237
tree.commit('first', rev_id='first-rev-id')
254
239
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
256
241
walker = _mod_tree.MultiWalker(tree, [basis_tree])
257
242
iterator = walker.iter_all()
258
243
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
259
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
260
self.assertWalkerNext(u'b', b'b-id', True, [u'b'], iterator)
261
self.assertWalkerNext(u'b/c', b'c-id', True, [u'b/c'], iterator)
262
self.assertRaises(StopIteration, next, iterator)
244
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
245
self.assertWalkerNext(u'b', 'b-id', True, [u'b'], iterator)
246
self.assertWalkerNext(u'b/c', 'c-id', True, [u'b/c'], iterator)
247
self.assertRaises(StopIteration, iterator.next)
264
249
def test_master_has_extra(self):
265
250
tree = self.make_branch_and_tree('tree')
266
251
self.build_tree(['tree/a', 'tree/b/', 'tree/c', 'tree/d'])
267
tree.add(['a', 'b', 'd'], [b'a-id', b'b-id', b'd-id'])
269
tree.commit('first', rev_id=b'first-rev-id')
271
tree.add(['c'], [b'c-id'])
252
tree.add(['a', 'b', 'd'], ['a-id', 'b-id', 'd-id'])
254
tree.commit('first', rev_id='first-rev-id')
256
tree.add(['c'], ['c-id'])
272
257
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
274
259
walker = _mod_tree.MultiWalker(tree, [basis_tree])
275
260
iterator = walker.iter_all()
276
261
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
277
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
278
self.assertWalkerNext(u'b', b'b-id', True, [u'b'], iterator)
279
self.assertWalkerNext(u'c', b'c-id', True, [None], iterator)
280
self.assertWalkerNext(u'd', b'd-id', True, [u'd'], iterator)
281
self.assertRaises(StopIteration, next, iterator)
262
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
263
self.assertWalkerNext(u'b', 'b-id', True, [u'b'], iterator)
264
self.assertWalkerNext(u'c', 'c-id', True, [None], iterator)
265
self.assertWalkerNext(u'd', 'd-id', True, [u'd'], iterator)
266
self.assertRaises(StopIteration, iterator.next)
283
268
def test_master_renamed_to_earlier(self):
284
269
"""The record is still present, it just shows up early."""
285
270
tree = self.make_branch_and_tree('tree')
286
271
self.build_tree(['tree/a', 'tree/c', 'tree/d'])
287
tree.add(['a', 'c', 'd'], [b'a-id', b'c-id', b'd-id'])
288
tree.commit('first', rev_id=b'first-rev-id')
272
tree.add(['a', 'c', 'd'], ['a-id', 'c-id', 'd-id'])
273
tree.commit('first', rev_id='first-rev-id')
289
274
tree.rename_one('d', 'b')
291
276
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
310
295
walker = _mod_tree.MultiWalker(tree, [basis_tree])
311
296
iterator = walker.iter_all()
312
297
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
313
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
314
self.assertWalkerNext(u'd', b'd-id', True, [u'd'], iterator)
315
self.assertWalkerNext(u'e', b'b-id', True, [u'b'], iterator)
316
self.assertRaises(StopIteration, next, iterator)
298
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
299
self.assertWalkerNext(u'd', 'd-id', True, [u'd'], iterator)
300
self.assertWalkerNext(u'e', 'b-id', True, [u'b'], iterator)
301
self.assertRaises(StopIteration, iterator.next)
318
303
def test_other_extra_in_middle(self):
319
304
tree = self.make_branch_and_tree('tree')
320
305
self.build_tree(['tree/a', 'tree/b', 'tree/d'])
321
tree.add(['a', 'b', 'd'], [b'a-id', b'b-id', b'd-id'])
322
tree.commit('first', rev_id=b'first-rev-id')
306
tree.add(['a', 'b', 'd'], ['a-id', 'b-id', 'd-id'])
307
tree.commit('first', rev_id='first-rev-id')
323
308
tree.remove(['b'])
325
310
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
326
311
walker = _mod_tree.MultiWalker(tree, [basis_tree])
327
312
iterator = walker.iter_all()
328
313
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
329
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
330
self.assertWalkerNext(u'd', b'd-id', True, [u'd'], iterator)
331
self.assertWalkerNext(u'b', b'b-id', False, [u'b'], iterator)
332
self.assertRaises(StopIteration, next, iterator)
314
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
315
self.assertWalkerNext(u'd', 'd-id', True, [u'd'], iterator)
316
self.assertWalkerNext(u'b', 'b-id', False, [u'b'], iterator)
317
self.assertRaises(StopIteration, iterator.next)
334
319
def test_other_extra_at_end(self):
335
320
tree = self.make_branch_and_tree('tree')
336
321
self.build_tree(['tree/a', 'tree/b', 'tree/d'])
337
tree.add(['a', 'b', 'd'], [b'a-id', b'b-id', b'd-id'])
338
tree.commit('first', rev_id=b'first-rev-id')
322
tree.add(['a', 'b', 'd'], ['a-id', 'b-id', 'd-id'])
323
tree.commit('first', rev_id='first-rev-id')
339
324
tree.remove(['d'])
341
326
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
342
327
walker = _mod_tree.MultiWalker(tree, [basis_tree])
343
328
iterator = walker.iter_all()
344
329
self.assertWalkerNext(u'', root_id, True, [u''], iterator)
345
self.assertWalkerNext(u'a', b'a-id', True, [u'a'], iterator)
346
self.assertWalkerNext(u'b', b'b-id', True, [u'b'], iterator)
347
self.assertWalkerNext(u'd', b'd-id', False, [u'd'], iterator)
348
self.assertRaises(StopIteration, next, iterator)
330
self.assertWalkerNext(u'a', 'a-id', True, [u'a'], iterator)
331
self.assertWalkerNext(u'b', 'b-id', True, [u'b'], iterator)
332
self.assertWalkerNext(u'd', 'd-id', False, [u'd'], iterator)
333
self.assertRaises(StopIteration, iterator.next)
350
335
def test_others_extra_at_end(self):
351
336
tree = self.make_branch_and_tree('tree')
352
337
self.build_tree(['tree/a', 'tree/b', 'tree/c', 'tree/d', 'tree/e'])
353
338
tree.add(['a', 'b', 'c', 'd', 'e'],
354
[b'a-id', b'b-id', b'c-id', b'd-id', b'e-id'])
355
tree.commit('first', rev_id=b'first-rev-id')
339
['a-id', 'b-id', 'c-id', 'd-id', 'e-id'])
340
tree.commit('first', rev_id='first-rev-id')
356
341
tree.remove(['e'])
357
tree.commit('second', rev_id=b'second-rev-id')
342
tree.commit('second', rev_id='second-rev-id')
358
343
tree.remove(['d'])
359
tree.commit('third', rev_id=b'third-rev-id')
344
tree.commit('third', rev_id='third-rev-id')
360
345
tree.remove(['c'])
362
347
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
363
first_tree = tree.branch.repository.revision_tree(b'first-rev-id')
364
second_tree = tree.branch.repository.revision_tree(b'second-rev-id')
348
first_tree = tree.branch.repository.revision_tree('first-rev-id')
349
second_tree = tree.branch.repository.revision_tree('second-rev-id')
365
350
walker = _mod_tree.MultiWalker(tree, [basis_tree, first_tree,
367
352
iterator = walker.iter_all()
368
353
self.assertWalkerNext(u'', root_id, True, [u'', u'', u''], iterator)
369
self.assertWalkerNext(u'a', b'a-id', True, [u'a', u'a', u'a'], iterator)
370
self.assertWalkerNext(u'b', b'b-id', True, [u'b', u'b', u'b'], iterator)
371
self.assertWalkerNext(u'c', b'c-id', False, [u'c', u'c', u'c'], iterator)
372
self.assertWalkerNext(u'd', b'd-id', False, [None, u'd', u'd'], iterator)
373
self.assertWalkerNext(u'e', b'e-id', False, [None, u'e', None], iterator)
374
self.assertRaises(StopIteration, next, iterator)
354
self.assertWalkerNext(u'a', 'a-id', True, [u'a', u'a', u'a'], iterator)
355
self.assertWalkerNext(u'b', 'b-id', True, [u'b', u'b', u'b'], iterator)
356
self.assertWalkerNext(u'c', 'c-id', False, [u'c', u'c', u'c'], iterator)
357
self.assertWalkerNext(u'd', 'd-id', False, [None, u'd', u'd'], iterator)
358
self.assertWalkerNext(u'e', 'e-id', False, [None, u'e', None], iterator)
359
self.assertRaises(StopIteration, iterator.next)
376
361
def test_different_file_id_in_others(self):
377
362
tree = self.make_branch_and_tree('tree')
378
363
self.build_tree(['tree/a', 'tree/b', 'tree/c/'])
379
tree.add(['a', 'b', 'c'], [b'a-id', b'b-id', b'c-id'])
380
tree.commit('first', rev_id=b'first-rev-id')
364
tree.add(['a', 'b', 'c'], ['a-id', 'b-id', 'c-id'])
365
tree.commit('first', rev_id='first-rev-id')
382
367
tree.rename_one('b', 'c/d')
383
368
self.build_tree(['tree/b'])
384
tree.add(['b'], [b'b2-id'])
385
tree.commit('second', rev_id=b'second-rev-id')
369
tree.add(['b'], ['b2-id'])
370
tree.commit('second', rev_id='second-rev-id')
387
372
tree.rename_one('a', 'c/e')
388
373
self.build_tree(['tree/a'])
389
tree.add(['a'], [b'a2-id'])
374
tree.add(['a'], ['a2-id'])
391
376
basis_tree, root_id = self.lock_and_get_basis_and_root_id(tree)
392
first_tree = tree.branch.repository.revision_tree(b'first-rev-id')
377
first_tree = tree.branch.repository.revision_tree('first-rev-id')
393
378
walker = _mod_tree.MultiWalker(tree, [basis_tree, first_tree])
395
380
iterator = walker.iter_all()
396
381
self.assertWalkerNext(u'', root_id, True, [u'', u''], iterator)
397
self.assertWalkerNext(u'a', b'a2-id', True, [None, None], iterator)
398
self.assertWalkerNext(u'b', b'b2-id', True, [u'b', None], iterator)
399
self.assertWalkerNext(u'c', b'c-id', True, [u'c', u'c'], iterator)
400
self.assertWalkerNext(u'c/d', b'b-id', True, [u'c/d', u'b'], iterator)
401
self.assertWalkerNext(u'c/e', b'a-id', True, [u'a', u'a'], iterator)
402
self.assertRaises(StopIteration, next, iterator)
382
self.assertWalkerNext(u'a', 'a2-id', True, [None, None], iterator)
383
self.assertWalkerNext(u'b', 'b2-id', True, [u'b', None], iterator)
384
self.assertWalkerNext(u'c', 'c-id', True, [u'c', u'c'], iterator)
385
self.assertWalkerNext(u'c/d', 'b-id', True, [u'c/d', u'b'], iterator)
386
self.assertWalkerNext(u'c/e', 'a-id', True, [u'a', u'a'], iterator)
387
self.assertRaises(StopIteration, iterator.next)
404
389
def assertCmpByDirblock(self, cmp_val, path1, path2):
405
390
self.assertEqual(cmp_val,