summaryrefslogtreecommitdiffstats
path: root/Lib/test/libregrtest/refleak.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-06-30 15:31:16 (GMT)
committerGitHub <noreply@github.com>2017-06-30 15:31:16 (GMT)
commita3ca94d0504157a112a1f89bfe8be1307116fc73 (patch)
treee9d48c00fcb20b5feb679ce8fa92622136c19f47 /Lib/test/libregrtest/refleak.py
parent23caf8cfc6c52bdedd8e8db688d807530355fd6d (diff)
downloadcpython-a3ca94d0504157a112a1f89bfe8be1307116fc73.zip
cpython-a3ca94d0504157a112a1f89bfe8be1307116fc73.tar.gz
cpython-a3ca94d0504157a112a1f89bfe8be1307116fc73.tar.bz2
[3.6] bpo-29512, bpo-30776: Backport regrtest enhancements from master to 3.6 (#2513)
* bpo-29512: Add test.bisect, bisect failing tests (#2452) Add a new "python3 -m test.bisect" tool to bisect failing tests. It can be used to find which test method(s) leak references, leak files, etc. (cherry picked from commit 84d9d14a1fa395fbd21262ba195490be25a7b3bc) * bpo-30776: regrtest: reduce memleak false positive (#2484) Only report a leak if each run leaks at least one memory block. (cherry picked from commit beeca6e1e5fd01531b1db7059498b13d07dca525)
Diffstat (limited to 'Lib/test/libregrtest/refleak.py')
-rw-r--r--Lib/test/libregrtest/refleak.py13
1 files changed, 3 insertions, 10 deletions
diff --git a/Lib/test/libregrtest/refleak.py b/Lib/test/libregrtest/refleak.py
index 8e18d75..8e93816 100644
--- a/Lib/test/libregrtest/refleak.py
+++ b/Lib/test/libregrtest/refleak.py
@@ -96,6 +96,8 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
# These checkers return False on success, True on failure
def check_rc_deltas(deltas):
+ # Checker for reference counters and memomry blocks.
+ #
# bpo-30776: Try to ignore false positives:
#
# [3, 0, 0]
@@ -108,22 +110,13 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
# [10, 1, 1]
return all(delta >= 1 for delta in deltas)
- def check_alloc_deltas(deltas):
- # At least 1/3rd of 0s
- if 3 * deltas.count(0) < len(deltas):
- return True
- # Nothing else than 1s, 0s and -1s
- if not set(deltas) <= {1,0,-1}:
- return True
- return False
-
def check_fd_deltas(deltas):
return any(deltas)
failed = False
for deltas, item_name, checker in [
(rc_deltas, 'references', check_rc_deltas),
- (alloc_deltas, 'memory blocks', check_alloc_deltas),
+ (alloc_deltas, 'memory blocks', check_rc_deltas),
(fd_deltas, 'file descriptors', check_fd_deltas)
]:
# ignore warmup runs