Commit 8bb0863e authored by Victor Stinner's avatar Victor Stinner Committed by GitHub

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.
parent 0e4571a6
...@@ -438,6 +438,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, ...@@ -438,6 +438,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
if slaveargs is not None: if slaveargs is not None:
args, kwargs = json.loads(slaveargs) args, kwargs = json.loads(slaveargs)
if kwargs['huntrleaks']:
warm_caches()
if testdir: if testdir:
kwargs['testdir'] = testdir kwargs['testdir'] = testdir
try: try:
...@@ -448,6 +450,9 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, ...@@ -448,6 +450,9 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
print json.dumps(result) print json.dumps(result)
sys.exit(0) sys.exit(0)
if huntrleaks:
warm_caches()
good = [] good = []
bad = [] bad = []
skipped = [] skipped = []
...@@ -1418,6 +1423,18 @@ def clear_caches(): ...@@ -1418,6 +1423,18 @@ def clear_caches():
# Collect cyclic trash. # Collect cyclic trash.
gc.collect() 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): def findtestdir(path=None):
return path or os.path.dirname(__file__) or os.curdir return path or os.path.dirname(__file__) or os.curdir
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment