Mercurial > public > mercurial-scm > hg-stable
diff mercurial/testing/storage.py @ 40387:f1a39128da95
filelog: add a hasnode() method (API)
Missing in the file storage interface is the ability to query whether
a specified value is a known node.
This commit defines that interface member and implements it on the
revlog and sqlite file stores.
Storage unit tests have been added.
The revlog implementation is a bit more complicated because index lookups
don't consistently raise the same exception. For SQLite, we can simply look
for a key in a dict.
Differential Revision: https://phab.mercurial-scm.org/D5163
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 03 Oct 2018 14:57:29 -0700 |
parents | 2c0aa02ecd5a |
children | 6a917075535a |
line wrap: on
line diff
--- a/mercurial/testing/storage.py Sun Oct 21 22:26:00 2018 -0400 +++ b/mercurial/testing/storage.py Wed Oct 03 14:57:29 2018 -0700 @@ -45,6 +45,13 @@ with self.assertRaises(StopIteration): next(gen) + self.assertFalse(f.hasnode(None)) + self.assertFalse(f.hasnode(0)) + self.assertFalse(f.hasnode(nullrev)) + self.assertFalse(f.hasnode(nullid)) + self.assertFalse(f.hasnode(b'0')) + self.assertFalse(f.hasnode(b'a' * 20)) + # revs() should evaluate to an empty list. self.assertEqual(list(f.revs()), []) @@ -161,6 +168,13 @@ with self.assertRaises(StopIteration): next(gen) + self.assertTrue(f.hasnode(node)) + self.assertFalse(f.hasnode(hex(node))) + self.assertFalse(f.hasnode(nullrev)) + self.assertFalse(f.hasnode(nullid)) + self.assertFalse(f.hasnode(node[0:12])) + self.assertFalse(f.hasnode(hex(node)[0:20])) + self.assertEqual(list(f.revs()), [0]) self.assertEqual(list(f.revs(start=1)), []) self.assertEqual(list(f.revs(start=0)), [0])