summaryrefslogtreecommitdiffstats
path: root/Lib/test/support.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2011-08-29 21:09:33 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2011-08-29 21:09:33 (GMT)
commit82be19f889e97618d73f405ad53ceffbee462008 (patch)
tree7d9dd159ec8bd79151e0afb8dc3d2947cc859f82 /Lib/test/support.py
parentaa26b275034c07784c4d64e9a2bc26c742577327 (diff)
downloadcpython-82be19f889e97618d73f405ad53ceffbee462008.zip
cpython-82be19f889e97618d73f405ad53ceffbee462008.tar.gz
cpython-82be19f889e97618d73f405ad53ceffbee462008.tar.bz2
Issue #11564: Avoid crashes when trying to pickle huge objects or containers
(more than 2**31 items). Instead, in most cases, an OverflowError is raised.
Diffstat (limited to 'Lib/test/support.py')
-rw-r--r--Lib/test/support.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py
index e82a4f9..8e6ca2a 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -1089,7 +1089,7 @@ def bigmemtest(minsize, memuse):
return wrapper
return decorator
-def precisionbigmemtest(size, memuse):
+def precisionbigmemtest(size, memuse, dry_run=True):
def decorator(f):
def wrapper(self):
size = wrapper.size
@@ -1099,10 +1099,11 @@ def precisionbigmemtest(size, memuse):
else:
maxsize = size
- if real_max_memuse and real_max_memuse < maxsize * memuse:
- raise unittest.SkipTest(
- "not enough memory: %.1fG minimum needed"
- % (size * memuse / (1024 ** 3)))
+ if ((real_max_memuse or not dry_run)
+ and real_max_memuse < maxsize * memuse):
+ raise unittest.SkipTest(
+ "not enough memory: %.1fG minimum needed"
+ % (size * memuse / (1024 ** 3)))
return f(self, maxsize)
wrapper.size = size