changeset 24749:3ad1571d4852

develwarn: include call site in the simple message version Just displaying the warning makes it quite hard to recognise the guilty code quickly and using --traceback for all calls is not very convenient. So we include the call site with all simple message to help developer to recognise errors sources.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Sun, 12 Apr 2015 14:27:42 -0400
parents d6caadff4779
children aaf835407bf2
files mercurial/scmutil.py tests/test-devel-warnings.t
diffstat 2 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/scmutil.py	Sun Apr 12 14:26:11 2015 -0400
+++ b/mercurial/scmutil.py	Sun Apr 12 14:27:42 2015 -0400
@@ -10,7 +10,7 @@
 import util, error, osutil, revset, similar, encoding, phases
 import pathutil
 import match as matchmod
-import os, errno, re, glob, tempfile, shutil, stat
+import os, errno, re, glob, tempfile, shutil, stat, inspect
 
 if os.name == 'nt':
     import scmwindows as scmplatform
@@ -177,7 +177,9 @@
     if tui.tracebackflag:
         util.debugstacktrace(msg, 2)
     else:
-        tui.write_err(msg + '\n')
+        curframe = inspect.currentframe()
+        calframe = inspect.getouterframes(curframe, 2)
+        tui.write_err('%s at: %s:%s (%s)\n' % ((msg,) + calframe[2][1:4]))
 
 def filteredhash(repo, maxrev):
     """build hash of filtered revisions in the current repoview.
--- a/tests/test-devel-warnings.t	Sun Apr 12 14:26:11 2015 -0400
+++ b/tests/test-devel-warnings.t	Sun Apr 12 14:27:42 2015 -0400
@@ -43,16 +43,16 @@
   $ hg init lock-checker
   $ cd lock-checker
   $ hg buggylocking
-  transaction with no lock
-  "wlock" acquired after "lock"
+  transaction with no lock at: $TESTTMP/buggylocking.py:11 (buggylocking)
+  "wlock" acquired after "lock" at: $TESTTMP/buggylocking.py:13 (buggylocking)
   $ cat << EOF >> $HGRCPATH
   > [devel]
   > all=0
   > check-locks=1
   > EOF
   $ hg buggylocking
-  transaction with no lock
-  "wlock" acquired after "lock"
+  transaction with no lock at: $TESTTMP/buggylocking.py:11 (buggylocking)
+  "wlock" acquired after "lock" at: $TESTTMP/buggylocking.py:13 (buggylocking)
   $ hg buggylocking --traceback
   transaction with no lock at:
    */hg:* in * (glob)