summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_support.py
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2006-08-09 15:37:26 (GMT)
committerArmin Rigo <arigo@tunes.org>2006-08-09 15:37:26 (GMT)
commit97ff04789de3e37af585648de70260a54a29bd47 (patch)
treed992c6d54983772958d2ac9fa7d72ef64b022a0d /Lib/test/test_support.py
parentc95f7569e875f609ceb7f07d24c09ace9c6111b0 (diff)
downloadcpython-97ff04789de3e37af585648de70260a54a29bd47.zip
cpython-97ff04789de3e37af585648de70260a54a29bd47.tar.gz
cpython-97ff04789de3e37af585648de70260a54a29bd47.tar.bz2
Concatenation on a long string breaks (SF #1526585).
Diffstat (limited to 'Lib/test/test_support.py')
-rw-r--r--Lib/test/test_support.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 6532c79..a9d5dab 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -314,6 +314,12 @@ _1M = 1024*1024
_1G = 1024 * _1M
_2G = 2 * _1G
+# Hack to get at the maximum value an internal index can take.
+class _Dummy:
+ def __getslice__(self, i, j):
+ return j
+MAX_Py_ssize_t = _Dummy()[:]
+
def set_memlimit(limit):
import re
global max_memuse
@@ -328,7 +334,9 @@ def set_memlimit(limit):
if m is None:
raise ValueError('Invalid memory limit %r' % (limit,))
memlimit = int(float(m.group(1)) * sizes[m.group(3).lower()])
- if memlimit < 2.5*_1G:
+ if memlimit > MAX_Py_ssize_t:
+ memlimit = MAX_Py_ssize_t
+ if memlimit < _2G - 1:
raise ValueError('Memory limit %r too low to be useful' % (limit,))
max_memuse = memlimit
@@ -371,6 +379,17 @@ def bigmemtest(minsize, memuse, overhead=5*_1M):
return wrapper
return decorator
+def bigaddrspacetest(f):
+ """Decorator for tests that fill the address space."""
+ def wrapper(self):
+ if max_memuse < MAX_Py_ssize_t:
+ if verbose:
+ sys.stderr.write("Skipping %s because of memory "
+ "constraint\n" % (f.__name__,))
+ else:
+ return f(self)
+ return wrapper
+
#=======================================================================
# Preliminary PyUNIT integration.