summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2012-06-17 21:18:07 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2012-06-17 21:18:07 (GMT)
commitd5a1a21a89aab37cb41ce58a5f5da3590c55df86 (patch)
treee7dca98adbc923029c50e577977a62df998a8166
parent48114b952b22cf68ab7dccfb571a2194fd89e6ef (diff)
downloadcpython-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.
-rw-r--r--Lib/importlib/test/test_locks.py2
-rw-r--r--Lib/test/test_inspect.py27
2 files changed, 16 insertions, 13 deletions
diff --git a/Lib/importlib/test/test_locks.py b/Lib/importlib/test/test_locks.py
index 35a72d4..7faff49 100644
--- a/Lib/importlib/test/test_locks.py
+++ b/Lib/importlib/test/test_locks.py
@@ -101,7 +101,7 @@ class LifetimeTests(unittest.TestCase):
def test_all_locks(self):
support.gc_collect()
- self.assertEqual(0, len(_bootstrap._module_locks))
+ self.assertEqual(0, len(_bootstrap._module_locks), _bootstrap._module_locks)
@support.reap_threads
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: