diff options
author | Armin Rigo <arigo@tunes.org> | 2006-08-09 15:37:26 (GMT) |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2006-08-09 15:37:26 (GMT) |
commit | 97ff04789de3e37af585648de70260a54a29bd47 (patch) | |
tree | d992c6d54983772958d2ac9fa7d72ef64b022a0d /Lib/test/test_support.py | |
parent | c95f7569e875f609ceb7f07d24c09ace9c6111b0 (diff) | |
download | cpython-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.py | 21 |
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. |