summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-01-09 11:10:30 -0600
committerBenjamin Peterson <benjamin@python.org>2014-01-09 11:10:30 -0600
commitb20dd0a9b7ecb5d711bcc7391d6019b188c9e9a2 (patch)
treea2993cf9d79192a6395b4996906755f667b62806
parentce490fff1b86794bdcdfcc3e05280635039377e9 (diff)
downloadcpython-b20dd0a9b7ecb5d711bcc7391d6019b188c9e9a2.tar.gz
clear zip stat cache after each ref leak run
-rwxr-xr-xLib/test/regrtest.py11
-rw-r--r--Lib/test/test_pkgutil.py4
2 files changed, 8 insertions, 7 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 21709f7032..da66c8feb1 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -1002,9 +1002,10 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
try:
import zipimport
except ImportError:
- zdc = None # Run unmodified on platforms without zipimport support
+ zsc = zdc = None # Run unmodified on platforms without zipimport support
else:
zdc = zipimport._zip_directory_cache.copy()
+ zsc = zipimport._zip_stat_cache.copy()
abcs = {}
modules = _abcoll, _pyio
for abc in [getattr(mod, a) for mod in modules for a in mod.__all__]:
@@ -1027,12 +1028,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, zdc, abcs)
+ dash_R_cleanup(fs, ps, pic, zdc, zsc, abcs)
for i in range(repcount):
rc_before = sys.gettotalrefcount()
run_the_test()
sys.stderr.write('.')
- dash_R_cleanup(fs, ps, pic, zdc, abcs)
+ dash_R_cleanup(fs, ps, pic, zdc, zsc, abcs)
rc_after = sys.gettotalrefcount()
if i >= nwarmup:
deltas.append(rc_after - rc_before)
@@ -1046,7 +1047,7 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
return True
return False
-def dash_R_cleanup(fs, ps, pic, zdc, abcs):
+def dash_R_cleanup(fs, ps, pic, zdc, zsc, abcs):
import gc, copy_reg
import _strptime, linecache
dircache = test_support.import_module('dircache', deprecated=True)
@@ -1072,6 +1073,8 @@ def dash_R_cleanup(fs, ps, pic, zdc, abcs):
else:
zipimport._zip_directory_cache.clear()
zipimport._zip_directory_cache.update(zdc)
+ zipimport._zip_stat_cache.clear()
+ zipimport._zip_stat_cache.update(zsc)
# clear type cache
sys._clear_type_cache()
diff --git a/Lib/test/test_pkgutil.py b/Lib/test/test_pkgutil.py
index f665e960d4..382474d3cc 100644
--- a/Lib/test/test_pkgutil.py
+++ b/Lib/test/test_pkgutil.py
@@ -133,9 +133,7 @@ class PkgutilPEP302Tests(unittest.TestCase):
def test_main():
run_unittest(PkgutilTests, PkgutilPEP302Tests)
- # this is necessary if test is run repeated (like when finding leaks)
- import zipimport
- zipimport._zip_directory_cache.clear()
+
if __name__ == '__main__':
test_main()