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