diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2009-11-16 03:55:51 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2009-11-16 03:55:51 (GMT) |
commit | 4976e3287a9696fb7b99ca8d757e3af1fdb4f763 (patch) | |
tree | 331463e13c4a81ee0833278c406fab9ad874e6be /Lib/test | |
parent | 11db64e5fd029a2e4db8e9d3c6c4676b410afc72 (diff) | |
download | cpython-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-x | Lib/test/regrtest.py | 19 |
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() |