# HG changeset patch # User Gregory Szorc # Date 2018-09-28 18:16:44 # Node ID ad8389ecd3f5a0627fc618e3750942384510a7ff # Parent 0e8836be95414a8775c75da52f69ca6e389fd886 storageutil: consistently raise LookupError (API) The interface docs say this is supposed to raise LookupError on failure. But for invalid revision number input, it could raise IndexError because ifileindex.node() is documented to raise IndexError. lookup() for files isn't used that much (pretty much just in basefilectx in core AFAICT). And callers should already be catching LookupError. So I don't anticipate that much fallout from this change. Differential Revision: https://phab.mercurial-scm.org/D4798 diff --git a/mercurial/testing/storage.py b/mercurial/testing/storage.py --- a/mercurial/testing/storage.py +++ b/mercurial/testing/storage.py @@ -199,13 +199,13 @@ class ifileindextests(basetestcase): with self.assertRaises(error.LookupError): f.lookup(hex(node)[0:12]) - with self.assertRaises(IndexError): + with self.assertRaises(error.LookupError): f.lookup(-2) with self.assertRaises(error.LookupError): f.lookup(b'-2') - with self.assertRaises(IndexError): + with self.assertRaises(error.LookupError): f.lookup(1) with self.assertRaises(error.LookupError): diff --git a/mercurial/utils/storageutil.py b/mercurial/utils/storageutil.py --- a/mercurial/utils/storageutil.py +++ b/mercurial/utils/storageutil.py @@ -121,7 +121,10 @@ def fileidlookup(store, fileid, identifi Raises ``error.LookupError`` on failure. """ if isinstance(fileid, int): - return store.node(fileid) + try: + return store.node(fileid) + except IndexError: + raise error.LookupError(fileid, identifier, _('no match found')) if len(fileid) == 20: try: