[PATCH] When failing to load an extension, show where Hg tried to load it from

Jesse Glick Jesse.Glick at Sun.COM
Mon Mar 3 11:47:58 CST 2008


# HG changeset patch
# User Jesse Glick <jesse.glick at sun.com>
# Date 1204566417 18000
# Node ID f8a86ea7521bc5e88bb0e32311f6fd63537cd662
# Parent  3a75fcc96dac682dae610644bae12faf0cfa9aa2
When failing to load an extension, show where Hg tried to load it from.

diff --git a/mercurial/extensions.py b/mercurial/extensions.py
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -78,8 +78,12 @@ def loadall(ui):
         except (util.SignalInterrupt, KeyboardInterrupt):
             raise
         except Exception, inst:
-            ui.warn(_("*** failed to import extension %s: %s\n") %
-                    (name, inst))
+            if path:
+                ui.warn(_("*** failed to import extension %s from %s: %s\n")
+                        % (name, path, inst))
+            else:
+                ui.warn(_("*** failed to import extension %s: %s\n")
+                        % (name, inst))
             if ui.print_exc():
                 return 1
 
diff --git a/tests/test-bad-extension b/tests/test-bad-extension
--- a/tests/test-bad-extension
+++ b/tests/test-bad-extension
@@ -7,5 +7,7 @@ echo "gpg =" >> $HGRCPATH
 echo "gpg =" >> $HGRCPATH
 echo "hgext.gpg =" >> $HGRCPATH
 echo "badext = $abspath" >> $HGRCPATH
+echo "badext2 =" >> $HGRCPATH
 
-hg -q help help
+hg -q help help 2>&1 | python -c \
+  "import sys; sys.stdout.write(sys.stdin.read().replace('$abspath', '.../badext.py'))"
diff --git a/tests/test-bad-extension.out b/tests/test-bad-extension.out
--- a/tests/test-bad-extension.out
+++ b/tests/test-bad-extension.out
@@ -1,4 +1,5 @@
-*** failed to import extension badext: bit bucket overflow
+*** failed to import extension badext from .../badext.py: bit bucket overflow
+*** failed to import extension badext2: No module named badext2
 hg help [COMMAND]
 
 show help for a command, extension, or list of commands


More information about the Mercurial-devel mailing list