Mercurial > public > mercurial-scm > hg
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) |