comparison mercurial/testing/storage.py @ 39866:e23c03dc5cf9

revlog: drop emitrevisiondeltas() and associated functionality (API) emitrevisions() is the future! Differential Revision: https://phab.mercurial-scm.org/D4726
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 24 Sep 2018 09:59:19 -0700
parents 5a9ab91e0a45
children 14e500b58263
comparison
equal deleted inserted replaced
39865:31b7e8e7132e 39866:e23c03dc5cf9
22 22
23 class basetestcase(unittest.TestCase): 23 class basetestcase(unittest.TestCase):
24 if not getattr(unittest.TestCase, r'assertRaisesRegex', False): 24 if not getattr(unittest.TestCase, r'assertRaisesRegex', False):
25 assertRaisesRegex = (# camelcase-required 25 assertRaisesRegex = (# camelcase-required
26 unittest.TestCase.assertRaisesRegexp) 26 unittest.TestCase.assertRaisesRegexp)
27
28 class revisiondeltarequest(object):
29 def __init__(self, node, p1, p2, linknode, basenode, ellipsis):
30 self.node = node
31 self.p1node = p1
32 self.p2node = p2
33 self.linknode = linknode
34 self.basenode = basenode
35 self.ellipsis = ellipsis
36 27
37 class ifileindextests(basetestcase): 28 class ifileindextests(basetestcase):
38 """Generic tests for the ifileindex interface. 29 """Generic tests for the ifileindex interface.
39 30
40 All file storage backends for index data should conform to the tests in this 31 All file storage backends for index data should conform to the tests in this
452 f.revdiff(nullrev, 0) 443 f.revdiff(nullrev, 0)
453 444
454 with self.assertRaises(IndexError): 445 with self.assertRaises(IndexError):
455 f.revdiff(0, 0) 446 f.revdiff(0, 0)
456 447
457 gen = f.emitrevisiondeltas([])
458 with self.assertRaises(StopIteration):
459 next(gen)
460
461 requests = [
462 revisiondeltarequest(nullid, nullid, nullid, nullid, nullid, False),
463 ]
464 gen = f.emitrevisiondeltas(requests)
465
466 delta = next(gen)
467
468 self.assertEqual(delta.node, nullid)
469 self.assertEqual(delta.p1node, nullid)
470 self.assertEqual(delta.p2node, nullid)
471 self.assertEqual(delta.linknode, nullid)
472 self.assertEqual(delta.basenode, nullid)
473 self.assertIsNone(delta.baserevisionsize)
474 self.assertEqual(delta.revision, b'')
475 self.assertIsNone(delta.delta)
476
477 with self.assertRaises(StopIteration):
478 next(gen)
479
480 requests = [
481 revisiondeltarequest(nullid, nullid, nullid, nullid, nullid, False),
482 revisiondeltarequest(nullid, b'\x01' * 20, b'\x02' * 20,
483 b'\x03' * 20, nullid, False)
484 ]
485
486 gen = f.emitrevisiondeltas(requests)
487
488 next(gen)
489 delta = next(gen)
490
491 self.assertEqual(delta.node, nullid)
492 self.assertEqual(delta.p1node, b'\x01' * 20)
493 self.assertEqual(delta.p2node, b'\x02' * 20)
494 self.assertEqual(delta.linknode, b'\x03' * 20)
495 self.assertEqual(delta.basenode, nullid)
496 self.assertIsNone(delta.baserevisionsize)
497 self.assertEqual(delta.revision, b'')
498 self.assertIsNone(delta.delta)
499
500 with self.assertRaises(StopIteration):
501 next(gen)
502
503 # Emitting empty list is an empty generator. 448 # Emitting empty list is an empty generator.
504 gen = f.emitrevisions([]) 449 gen = f.emitrevisions([])
505 with self.assertRaises(StopIteration): 450 with self.assertRaises(StopIteration):
506 next(gen) 451 next(gen)
507 452
558 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07%s' % 503 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07%s' %
559 fulltext) 504 fulltext)
560 505
561 self.assertEqual(f.revdiff(0, nullrev), 506 self.assertEqual(f.revdiff(0, nullrev),
562 b'\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00') 507 b'\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00')
563
564 requests = [
565 revisiondeltarequest(node, nullid, nullid, nullid, nullid, False),
566 ]
567 gen = f.emitrevisiondeltas(requests)
568
569 delta = next(gen)
570
571 self.assertEqual(delta.node, node)
572 self.assertEqual(delta.p1node, nullid)
573 self.assertEqual(delta.p2node, nullid)
574 self.assertEqual(delta.linknode, nullid)
575 self.assertEqual(delta.basenode, nullid)
576 self.assertIsNone(delta.baserevisionsize)
577 self.assertEqual(delta.revision, fulltext)
578 self.assertIsNone(delta.delta)
579
580 with self.assertRaises(StopIteration):
581 next(gen)
582 508
583 # Emitting a single revision works. 509 # Emitting a single revision works.
584 gen = f.emitrevisions([node]) 510 gen = f.emitrevisions([node])
585 rev = next(gen) 511 rev = next(gen)
586 512
694 fulltext1) 620 fulltext1)
695 621
696 self.assertEqual(f.revdiff(0, 2), 622 self.assertEqual(f.revdiff(0, 2),
697 b'\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x02' + 623 b'\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x02' +
698 fulltext2) 624 fulltext2)
699
700 requests = [
701 revisiondeltarequest(node0, nullid, nullid, b'\x01' * 20, nullid,
702 False),
703 revisiondeltarequest(node1, node0, nullid, b'\x02' * 20, node0,
704 False),
705 revisiondeltarequest(node2, node1, nullid, b'\x03' * 20, node1,
706 False),
707 ]
708 gen = f.emitrevisiondeltas(requests)
709
710 delta = next(gen)
711
712 self.assertEqual(delta.node, node0)
713 self.assertEqual(delta.p1node, nullid)
714 self.assertEqual(delta.p2node, nullid)
715 self.assertEqual(delta.linknode, b'\x01' * 20)
716 self.assertEqual(delta.basenode, nullid)
717 self.assertIsNone(delta.baserevisionsize)
718 self.assertEqual(delta.revision, fulltext0)
719 self.assertIsNone(delta.delta)
720
721 delta = next(gen)
722
723 self.assertEqual(delta.node, node1)
724 self.assertEqual(delta.p1node, node0)
725 self.assertEqual(delta.p2node, nullid)
726 self.assertEqual(delta.linknode, b'\x02' * 20)
727 self.assertEqual(delta.basenode, node0)
728 self.assertIsNone(delta.baserevisionsize)
729 self.assertIsNone(delta.revision)
730 self.assertEqual(delta.delta,
731 b'\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x01' +
732 fulltext1)
733
734 delta = next(gen)
735
736 self.assertEqual(delta.node, node2)
737 self.assertEqual(delta.p1node, node1)
738 self.assertEqual(delta.p2node, nullid)
739 self.assertEqual(delta.linknode, b'\x03' * 20)
740 self.assertEqual(delta.basenode, node1)
741 self.assertIsNone(delta.baserevisionsize)
742 self.assertIsNone(delta.revision)
743 self.assertEqual(delta.delta,
744 b'\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x04\x02' +
745 fulltext2)
746
747 with self.assertRaises(StopIteration):
748 next(gen)
749 625
750 # Nodes should be emitted in order. 626 # Nodes should be emitted in order.
751 gen = f.emitrevisions([node0, node1, node2], revisiondata=True) 627 gen = f.emitrevisions([node0, node1, node2], revisiondata=True)
752 628
753 rev = next(gen) 629 rev = next(gen)