diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 48779fc9c87792..521ac137b6112c 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