Skip to content
Snippets Groups Projects
Commit 55345152 authored by Matt Harbison's avatar Matt Harbison
Browse files

extensions: ignore exceptions from an extension's `getversion()` method

This method is usually called when there's a stacktrace being generated, or with
`hg version -v`.  Raising another exception risks mangling the bug report info.

I hit this issue when trying to add the method to the keyring extension to
report the version of the extension and the underlying module, and ran into
demandimport issues prior to py3.8.  It seems like a wise thing to do anyway,
though unfortunately there's no convenient `ui` object around to issue a
warning.  Use 'unknown' to signal that it tried to report a version and failed,
unlike the default case of printing nothing.

Differential Revision: https://phab.mercurial-scm.org/D10540
parent 9cea55ca
No related branches found
No related tags found
No related merge requests found
......@@ -930,7 +930,11 @@
def moduleversion(module):
'''return version information from given module as a string'''
if util.safehasattr(module, b'getversion') and callable(module.getversion):
version = module.getversion()
try:
version = module.getversion()
except Exception:
version = b'unknown'
elif util.safehasattr(module, b'__version__'):
version = module.__version__
else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment