[PATCH 3 of 3] hook: for python hook ImportErrors, add note to run with --traceback

Siddharth Agarwal sid0 at fb.com
Fri Feb 12 07:04:13 UTC 2016


# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1455259943 28800
#      Thu Feb 11 22:52:23 2016 -0800
# Node ID d1930111ddf8c6fab4f058d3ff0400f85abcd247
# Parent  da66d8660fc331fe4d73298fa497cff3a830fa6b
# Available At http://42.netv6.net/sid0-wip/hg/
#              hg pull http://42.netv6.net/sid0-wip/hg/ -r d1930111ddf8
hook: for python hook ImportErrors, add note to run with --traceback

I personally found it completely non-obvious that --traceback prints out stack
traces for failed imports.

diff --git a/mercurial/hook.py b/mercurial/hook.py
--- a/mercurial/hook.py
+++ b/mercurial/hook.py
@@ -64,9 +64,15 @@ def _pythonhook(ui, repo, name, hname, f
                         ui.warn(_('exception from second failed import '
                                   'attempt:\n'))
                     ui.traceback(e2)
+
+                    if not ui.tracebackflag:
+                        tracebackhint = _(
+                            'run with --traceback for stack trace')
+                    else:
+                        tracebackhint = None
                     raise error.HookLoadError(
                         _('%s hook is invalid: import of "%s" failed') %
-                        (hname, modname))
+                        (hname, modname), hint=tracebackhint)
         sys.path = oldpaths
         try:
             for p in funcname.split('.')[1:]:
diff --git a/tests/test-hook.t b/tests/test-hook.t
--- a/tests/test-hook.t
+++ b/tests/test-hook.t
@@ -505,6 +505,7 @@ test python hooks
   pulling from ../a
   searching for changes
   abort: preoutgoing.badmodule hook is invalid: import of "nomodule" failed
+  (run with --traceback for stack trace)
   [255]
 
   $ echo '[hooks]' > ../a/.hg/hgrc
@@ -513,6 +514,7 @@ test python hooks
   pulling from ../a
   searching for changes
   abort: preoutgoing.unreachable hook is invalid: import of "hooktests.container" failed
+  (run with --traceback for stack trace)
   [255]
 
   $ echo '[hooks]' > ../a/.hg/hgrc



More information about the Mercurial-devel mailing list