From: Victor Stinner Date: Fri, 16 Jun 2017 10:14:09 +0000 (+0200) Subject: bpo-30675: Fix refleak hunting in regrtest (#2227) X-Git-Tag: v2.7.14rc1~93 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8bb0863e0282c71d21bc2c1b5184d05d8f3a0988;p=python bpo-30675: Fix refleak hunting in regrtest (#2227) regrtest now warms up caches: create explicitly all internal singletons which are created on demand to prevent false positives when checking for reference leaks. --- diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 48779fc9c8..521ac137b6 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -438,6 +438,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, if slaveargs is not None: args, kwargs = json.loads(slaveargs) + if kwargs['huntrleaks']: + warm_caches() if testdir: kwargs['testdir'] = testdir try: @@ -448,6 +450,9 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, print json.dumps(result) sys.exit(0) + if huntrleaks: + warm_caches() + good = [] bad = [] skipped = [] @@ -1418,6 +1423,18 @@ def clear_caches(): # Collect cyclic trash. gc.collect() +def warm_caches(): + """Create explicitly internal singletons which are created on demand + to prevent false positive when hunting reference leaks.""" + # char cache + for i in range(256): + chr(i) + # unicode cache + for i in range(256): + unichr(i) + # int cache + list(range(-5, 257)) + def findtestdir(path=None): return path or os.path.dirname(__file__) or os.curdir