# HG changeset patch # User Idan Kamara # Date 2011-05-23 20:09:00 # Node ID c238b12a1ed45da63d202d88e5c41f90e356e39b # Parent 90937dd4d94bdd6d2933b96b3fdfabb07dc53cc8 extensions: raise when trying to find an extension that failed to load extensions that depend on other extensions (such as record) use this pattern to check if the dependant extension is available: try: mq = extensions.find('mq') except KeyError: return but since if an error occurs while loading an extension it leaves its entry in the _extensions map as None, we want to raise in that situation too. (rather than adding another check if the return value is None) diff --git a/mercurial/extensions.py b/mercurial/extensions.py --- a/mercurial/extensions.py +++ b/mercurial/extensions.py @@ -21,13 +21,17 @@ def extensions(): def find(name): '''return module with given extension name''' + mod = None try: - return _extensions[name] + mod = _extensions[name] except KeyError: for k, v in _extensions.iteritems(): if k.endswith('.' + name) or k.endswith('/' + name): - return v + mod = v + break + if not mod: raise KeyError(name) + return mod def loadpath(path, module_name): module_name = module_name.replace('.', '_') diff --git a/tests/test-qrecord.t b/tests/test-qrecord.t --- a/tests/test-qrecord.t +++ b/tests/test-qrecord.t @@ -99,9 +99,24 @@ qrecord patch (mq not present) abort: 'mq' extension not loaded [255] +help (bad mq) + + $ echo "mq=nonexistant" >> $HGRCPATH + $ hg help qrecord + *** failed to import extension mq from nonexistant: [Errno 2] No such file or directory + hg qrecord [OPTION]... PATCH [FILE]... + + interactively record a new patch + + See "hg help qnew" & "hg help record" for more information and usage. + + use "hg -v help qrecord" to show global options + help (mq present) - $ echo "mq=" >> $HGRCPATH + $ sed 's/mq=nonexistant/mq=/' $HGRCPATH > hgrc.tmp + $ mv hgrc.tmp $HGRCPATH + $ hg help qrecord hg qrecord [OPTION]... PATCH [FILE]...