summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2009-11-16 03:55:51 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2009-11-16 03:55:51 (GMT)
commit4976e3287a9696fb7b99ca8d757e3af1fdb4f763 (patch)
tree331463e13c4a81ee0833278c406fab9ad874e6be /Lib/test
parent11db64e5fd029a2e4db8e9d3c6c4676b410afc72 (diff)
downloadcpython-4976e3287a9696fb7b99ca8d757e3af1fdb4f763.zip
cpython-4976e3287a9696fb7b99ca8d757e3af1fdb4f763.tar.gz
cpython-4976e3287a9696fb7b99ca8d757e3af1fdb4f763.tar.bz2
Account for another cache when hunting ref leaks
Diffstat (limited to 'Lib/test')
-rwxr-xr-xLib/test/regrtest.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 51b21a5..813ce76 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -948,6 +948,12 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
fs = warnings.filters[:]
ps = copy_reg.dispatch_table.copy()
pic = sys.path_importer_cache.copy()
+ try:
+ import zipimport
+ except ImportError:
+ zdc = None # Run unmodified on platforms without zipimport support
+ else:
+ zdc = zipimport._zip_directory_cache.copy()
abcs = {}
modules = _abcoll, _pyio
for abc in [getattr(mod, a) for mod in modules for a in mod.__all__]:
@@ -969,12 +975,12 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
repcount = nwarmup + ntracked
print >> sys.stderr, "beginning", repcount, "repetitions"
print >> sys.stderr, ("1234567890"*(repcount//10 + 1))[:repcount]
- dash_R_cleanup(fs, ps, pic, abcs)
+ dash_R_cleanup(fs, ps, pic, zdc, abcs)
for i in range(repcount):
rc = sys.gettotalrefcount()
run_the_test()
sys.stderr.write('.')
- dash_R_cleanup(fs, ps, pic, abcs)
+ dash_R_cleanup(fs, ps, pic, zdc, abcs)
if i >= nwarmup:
deltas.append(sys.gettotalrefcount() - rc - 2)
print >> sys.stderr
@@ -987,7 +993,7 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
return True
return False
-def dash_R_cleanup(fs, ps, pic, abcs):
+def dash_R_cleanup(fs, ps, pic, zdc, abcs):
import gc, copy_reg
import _strptime, linecache
dircache = test_support.import_module('dircache', deprecated=True)
@@ -1006,6 +1012,13 @@ def dash_R_cleanup(fs, ps, pic, abcs):
copy_reg.dispatch_table.update(ps)
sys.path_importer_cache.clear()
sys.path_importer_cache.update(pic)
+ try:
+ import zipimport
+ except ImportError:
+ pass # Run unmodified on platforms without zipimport support
+ else:
+ zipimport._zip_directory_cache.clear()
+ zipimport._zip_directory_cache.update(zdc)
# clear type cache
sys._clear_type_cache()