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]...