--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1395,6 +1395,8 @@ def help_(ui, name=None, with_version=Fa
try:
ct = mod.cmdtable
except AttributeError:
+ ct = None
+ if not ct:
ui.status(_('no commands defined\n'))
return
--- a/tests/test-extension
+++ b/tests/test-extension
@@ -53,3 +53,14 @@ echo '[extensions]' > $HGRCPATH
echo "barfoo = $barfoopath" >> $HGRCPATH
cd a
hg foo
+
+cd ..
+cat > empty.py <<EOF
+'''empty cmdtable
+'''
+cmdtable = {}
+EOF
+emptypath=`pwd`/empty.py
+echo '[extensions]' > $HGRCPATH
+echo "empty = $emptypath" >> $HGRCPATH
+hg help empty
--- a/tests/test-extension.out
+++ b/tests/test-extension.out
@@ -19,3 +19,6 @@ ui.parentui isnot None
reposetup called for a
ui == repo.ui
Foo
+empty extension - empty cmdtable
+
+no commands defined