D4864: testing: add file storage tests for getstrippoint() and strip()

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Thu Oct 4 14:21:43 EDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rHG8e19d7a4cc87: testing: add file storage tests for getstrippoint() and strip() (authored by indygreg, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D4864?vs=11645&id=11683

REVISION DETAIL
  https://phab.mercurial-scm.org/D4864

AFFECTED FILES
  mercurial/testing/storage.py

CHANGE DETAILS

diff --git a/mercurial/testing/storage.py b/mercurial/testing/storage.py
--- a/mercurial/testing/storage.py
+++ b/mercurial/testing/storage.py
@@ -1004,6 +1004,123 @@
         self.assertEqual(f.node(1), nodes[1])
         self.assertEqual(f.node(2), nodes[2])
 
+    def testgetstrippointnoparents(self):
+        # N revisions where none have parents.
+        f = self._makefilefn()
+
+        with self._maketransactionfn() as tr:
+            for rev in range(10):
+                f.add(b'%d' % rev, None, tr, rev, nullid, nullid)
+
+        for rev in range(10):
+            self.assertEqual(f.getstrippoint(rev), (rev, set()))
+
+    def testgetstrippointlinear(self):
+        # N revisions in a linear chain.
+        f = self._makefilefn()
+
+        with self._maketransactionfn() as tr:
+            p1 = nullid
+
+            for rev in range(10):
+                f.add(b'%d' % rev, None, tr, rev, p1, nullid)
+
+        for rev in range(10):
+            self.assertEqual(f.getstrippoint(rev), (rev, set()))
+
+    def testgetstrippointmultipleheads(self):
+        f = self._makefilefn()
+
+        with self._maketransactionfn() as tr:
+            node0 = f.add(b'0', None, tr, 0, nullid, nullid)
+            node1 = f.add(b'1', None, tr, 1, node0, nullid)
+            f.add(b'2', None, tr, 2, node1, nullid)
+            f.add(b'3', None, tr, 3, node0, nullid)
+            f.add(b'4', None, tr, 4, node0, nullid)
+
+        for rev in range(5):
+            self.assertEqual(f.getstrippoint(rev), (rev, set()))
+
+    def testgetstrippointearlierlinkrevs(self):
+        f = self._makefilefn()
+
+        with self._maketransactionfn() as tr:
+            node0 = f.add(b'0', None, tr, 0, nullid, nullid)
+            f.add(b'1', None, tr, 10, node0, nullid)
+            f.add(b'2', None, tr, 5, node0, nullid)
+
+        self.assertEqual(f.getstrippoint(0), (0, set()))
+        self.assertEqual(f.getstrippoint(1), (1, set()))
+        self.assertEqual(f.getstrippoint(2), (1, set()))
+        self.assertEqual(f.getstrippoint(3), (1, set()))
+        self.assertEqual(f.getstrippoint(4), (1, set()))
+        self.assertEqual(f.getstrippoint(5), (1, set()))
+        self.assertEqual(f.getstrippoint(6), (1, {2}))
+        self.assertEqual(f.getstrippoint(7), (1, {2}))
+        self.assertEqual(f.getstrippoint(8), (1, {2}))
+        self.assertEqual(f.getstrippoint(9), (1, {2}))
+        self.assertEqual(f.getstrippoint(10), (1, {2}))
+        self.assertEqual(f.getstrippoint(11), (3, set()))
+
+    def teststripempty(self):
+        f = self._makefilefn()
+
+        with self._maketransactionfn() as tr:
+            f.strip(0, tr)
+
+        self.assertEqual(len(f), 0)
+
+    def teststripall(self):
+        f = self._makefilefn()
+
+        with self._maketransactionfn() as tr:
+            p1 = nullid
+            for rev in range(10):
+                p1 = f.add(b'%d' % rev, None, tr, rev, p1, nullid)
+
+        self.assertEqual(len(f), 10)
+
+        with self._maketransactionfn() as tr:
+            f.strip(0, tr)
+
+        self.assertEqual(len(f), 0)
+
+    def teststrippartial(self):
+        f = self._makefilefn()
+
+        with self._maketransactionfn() as tr:
+            f.add(b'0', None, tr, 0, nullid, nullid)
+            node1 = f.add(b'1', None, tr, 5, nullid, nullid)
+            node2 = f.add(b'2', None, tr, 10, nullid, nullid)
+
+        self.assertEqual(len(f), 3)
+
+        with self._maketransactionfn() as tr:
+            f.strip(11, tr)
+
+        self.assertEqual(len(f), 3)
+
+        with self._maketransactionfn() as tr:
+            f.strip(10, tr)
+
+        self.assertEqual(len(f), 2)
+
+        with self.assertRaises(error.LookupError):
+            f.rev(node2)
+
+        with self._maketransactionfn() as tr:
+            f.strip(6, tr)
+
+        self.assertEqual(len(f), 2)
+
+        with self._maketransactionfn() as tr:
+            f.strip(3, tr)
+
+        self.assertEqual(len(f), 1)
+
+        with self.assertRaises(error.LookupError):
+            f.rev(node1)
+
 def makeifileindextests(makefilefn, maketransactionfn):
     """Create a unittest.TestCase class suitable for testing file storage.
 



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list