diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2012-06-17 21:18:07 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2012-06-17 21:18:07 (GMT) |
commit | d5a1a21a89aab37cb41ce58a5f5da3590c55df86 (patch) | |
tree | e7dca98adbc923029c50e577977a62df998a8166 /Lib/test | |
parent | 48114b952b22cf68ab7dccfb571a2194fd89e6ef (diff) | |
download | cpython-d5a1a21a89aab37cb41ce58a5f5da3590c55df86.zip cpython-d5a1a21a89aab37cb41ce58a5f5da3590c55df86.tar.gz cpython-d5a1a21a89aab37cb41ce58a5f5da3590c55df86.tar.bz2 |
Prevent test_inspect from keeping alive a ton of frames and local variables by way of a global variable keeping a reference to a traceback.
Should fix some buildbot failures.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_inspect.py | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index d840bbe..802e100 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -41,11 +41,6 @@ def revise(filename, *args): import builtins -try: - 1/0 -except: - tb = sys.exc_info()[2] - git = mod.StupidGit() class IsTestBase(unittest.TestCase): @@ -79,23 +74,31 @@ class TestPredicates(IsTestBase): def test_excluding_predicates(self): + global tb self.istest(inspect.isbuiltin, 'sys.exit') self.istest(inspect.isbuiltin, '[].append') self.istest(inspect.iscode, 'mod.spam.__code__') - self.istest(inspect.isframe, 'tb.tb_frame') + try: + 1/0 + except: + tb = sys.exc_info()[2] + self.istest(inspect.isframe, 'tb.tb_frame') + self.istest(inspect.istraceback, 'tb') + if hasattr(types, 'GetSetDescriptorType'): + self.istest(inspect.isgetsetdescriptor, + 'type(tb.tb_frame).f_locals') + else: + self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals)) + finally: + # Clear traceback and all the frames and local variables hanging to it. + tb = None self.istest(inspect.isfunction, 'mod.spam') self.istest(inspect.isfunction, 'mod.StupidGit.abuse') self.istest(inspect.ismethod, 'git.argue') self.istest(inspect.ismodule, 'mod') - self.istest(inspect.istraceback, 'tb') self.istest(inspect.isdatadescriptor, 'collections.defaultdict.default_factory') self.istest(inspect.isgenerator, '(x for x in range(2))') self.istest(inspect.isgeneratorfunction, 'generator_function_example') - if hasattr(types, 'GetSetDescriptorType'): - self.istest(inspect.isgetsetdescriptor, - 'type(tb.tb_frame).f_locals') - else: - self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals)) if hasattr(types, 'MemberDescriptorType'): self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days') else: |