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 48779fc..521ac13 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -438,6 +438,8 @@
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 @@
print json.dumps(result)
sys.exit(0)
+ if huntrleaks:
+ warm_caches()
+
good = []
bad = []
skipped = []
@@ -1418,6 +1423,18 @@
# 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