dispatch: split global error handling out so it can be reused
We may want a similar error handling at worker.py. This patch extracts the
error handling logic to "callcatch" so it can be reused.
--- a/mercurial/dispatch.py Wed Aug 10 04:35:44 2016 +0530
+++ b/mercurial/dispatch.py Tue Aug 09 16:45:28 2016 +0100
@@ -150,7 +150,7 @@
except ValueError:
pass # happens if called in a thread
- try:
+ def _runcatchfunc():
try:
debugger = 'pdb'
debugtrace = {
@@ -212,6 +212,16 @@
ui.traceback()
raise
+ return callcatch(ui, _runcatchfunc)
+
+def callcatch(ui, func):
+ """call func() with global exception handling
+
+ return func() if no exception happens. otherwise do some error handling
+ and return an exit code accordingly.
+ """
+ try:
+ return func()
# Global exception handling, alphabetically
# Mercurial-specific first, followed by built-in and library exceptions
except error.AmbiguousCommand as inst:
--- a/tests/test-devel-warnings.t Wed Aug 10 04:35:44 2016 +0530
+++ b/tests/test-devel-warnings.t Tue Aug 09 16:45:28 2016 +0100
@@ -91,6 +91,8 @@
*/mercurial/dispatch.py:* in run (glob)
*/mercurial/dispatch.py:* in dispatch (glob)
*/mercurial/dispatch.py:* in _runcatch (glob)
+ */mercurial/dispatch.py:* in callcatch (glob)
+ */mercurial/dispatch.py:* in _runcatchfunc (glob)
*/mercurial/dispatch.py:* in _dispatch (glob)
*/mercurial/dispatch.py:* in runcommand (glob)
*/mercurial/dispatch.py:* in _runcommand (glob)
@@ -125,6 +127,8 @@
*/mercurial/dispatch.py:* in run (glob)
*/mercurial/dispatch.py:* in dispatch (glob)
*/mercurial/dispatch.py:* in _runcatch (glob)
+ */mercurial/dispatch.py:* in callcatch (glob)
+ */mercurial/dispatch.py:* in _runcatchfunc (glob)
*/mercurial/dispatch.py:* in _dispatch (glob)
*/mercurial/dispatch.py:* in runcommand (glob)
*/mercurial/dispatch.py:* in _runcommand (glob)
@@ -147,6 +151,8 @@
*/mercurial/dispatch.py:* in run (glob)
*/mercurial/dispatch.py:* in dispatch (glob)
*/mercurial/dispatch.py:* in _runcatch (glob)
+ */mercurial/dispatch.py:* in callcatch (glob)
+ */mercurial/dispatch.py:* in _runcatchfunc (glob)
*/mercurial/dispatch.py:* in _dispatch (glob)
*/mercurial/dispatch.py:* in runcommand (glob)
*/mercurial/dispatch.py:* in _runcommand (glob)