]> granicus.if.org Git - python/commitdiff
Issue 7815. __unittest in module globals trims frames from reported stacktraces in...
authorMichael Foord <fuzzyman@voidspace.org.uk>
Mon, 22 Mar 2010 00:06:30 +0000 (00:06 +0000)
committerMichael Foord <fuzzyman@voidspace.org.uk>
Mon, 22 Mar 2010 00:06:30 +0000 (00:06 +0000)
Lib/test/test_unittest.py
Lib/unittest/__init__.py
Lib/unittest/__main__.py
Lib/unittest/case.py
Lib/unittest/loader.py
Lib/unittest/main.py
Lib/unittest/result.py
Lib/unittest/runner.py
Lib/unittest/suite.py
Lib/unittest/util.py

index e094923cd3f82788e95fe0a278b80b9390ad885c..9dbb0dbc2191d25dcaaa7c3e34b588a2d629ec72 100644 (file)
@@ -2084,6 +2084,16 @@ class Test_TestResult(TestCase):
                 'Tests getDescription() for a method with a longer '
                 'docstring.'))
 
+    def testStackFrameTrimming(self):
+        class Frame(object):
+            class tb_frame(object):
+                f_globals = {}
+        result = unittest.TestResult()
+        self.assertFalse(result._is_relevant_tb_level(Frame))
+
+        Frame.tb_frame.f_globals['__unittest'] = True
+        self.assertTrue(result._is_relevant_tb_level(Frame))
+
 classDict = dict(unittest.TestResult.__dict__)
 for m in ('addSkip', 'addExpectedFailure', 'addUnexpectedSuccess',
            '__init__'):
index 06fe55d08d5eff409477c1088d640e671ba19a4b..8f77127a0d26d00e1096cb3b0f5dc328875bf417 100644 (file)
@@ -64,3 +64,5 @@ from .runner import TextTestRunner, TextTestResult
 
 # deprecated
 _TextTestResult = TextTestResult
+
+__unittest = True
index 5bbda1c19bee864da7213c920a2f40d0522bf36f..5023610c8202af1528482b187cdc443ba4df2616 100644 (file)
@@ -4,5 +4,8 @@ import sys
 if sys.argv[0].endswith("__main__.py"):
     sys.argv[0] = "unittest"
 
+__unittest = True
+
+
 from .main import main
 main(module=None)
index feae3fa7a67976e843619f5f4a91376e094de9c3..94956896f3e8e73f3aab15daf6d79cfa77a9f600 100644 (file)
@@ -12,6 +12,9 @@ from .util import (
     strclass, safe_repr, sorted_list_difference, unorderable_list_difference
 )
 
+__unittest = True
+
+
 class SkipTest(Exception):
     """
     Raise this exception in a test to skip it.
index 9eede8b51a48b17aafa4423bfc260f2936f8871b..d6c8d8424519e26ee24c175ade9c044e9a17dbd7 100644 (file)
@@ -10,6 +10,8 @@ from fnmatch import fnmatch
 
 from . import case, suite
 
+__unittest = True
+
 
 def _CmpToKey(mycmp):
     'Convert a cmp= function into a key= function'
index bd758e056fab57840cdff9c9fad28c2bd30817e2..3f0f43d0e24c22954785a57e68a4d919e00764e1 100644 (file)
@@ -6,6 +6,8 @@ import types
 
 from . import loader, runner
 
+__unittest = True
+
 
 USAGE_AS_MAIN = """\
 Usage: %(progName)s [options] [tests]
index 746967ec28a7b652b9d77bd070ee50b96dd58de5..91cf2183436936bb9153efa5efa0f6d0b5d665a1 100644 (file)
@@ -4,6 +4,8 @@ import traceback
 
 from . import util
 
+__unittest = True
+
 
 class TestResult(object):
     """Holder for test result information.
@@ -98,11 +100,7 @@ class TestResult(object):
         return ''.join(traceback.format_exception(exctype, value, tb))
 
     def _is_relevant_tb_level(self, tb):
-        globs = tb.tb_frame.f_globals
-        is_relevant =  '__name__' in globs and \
-            globs["__name__"].startswith("unittest")
-        del globs
-        return is_relevant
+        return '__unittest' in tb.tb_frame.f_globals
 
     def _count_relevant_tb_levels(self, tb):
         length = 0
index 2fe01f67271040c5b107748d63aa81f89188a36a..f9e199548f83d71d2fce9c6c8daf0b28132256ea 100644 (file)
@@ -5,6 +5,8 @@ import time
 
 from . import result
 
+__unittest = True
+
 
 class _WritelnDecorator(object):
     """Used to decorate file-like objects with a handy 'writeln' method"""
index cccc7efda462600cdbcdd9ab4f387bec0e6a6ab6..0dd2dc56f1a4d3da94b8b38a85b2122e2279a07a 100644 (file)
@@ -5,6 +5,8 @@ import sys
 from . import case
 from . import util
 
+__unittest = True
+
 
 class BaseTestSuite(object):
     """A simple test suite that doesn't provide class or module shared fixtures.
index 9ddf879387c78a518b56aec0233f2e5a5faf862d..7d90ddf9ca4f2f5f0abcfbc6c2d45dcb87ec04a3 100644 (file)
@@ -1,5 +1,8 @@
 """Various utility functions."""
 
+__unittest = True
+
+
 def safe_repr(obj):
     try:
         return repr(obj)