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_bigaddrspace.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_bigaddrspace.py')
-rw-r--r-- | Lib/test/test_bigaddrspace.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Lib/test/test_bigaddrspace.py b/Lib/test/test_bigaddrspace.py new file mode 100644 index 0000000..8c215fe --- /dev/null +++ b/Lib/test/test_bigaddrspace.py @@ -0,0 +1,46 @@ +from test import test_support +from test.test_support import bigaddrspacetest, MAX_Py_ssize_t + +import unittest +import operator +import sys + + +class StrTest(unittest.TestCase): + + @bigaddrspacetest + def test_concat(self): + s1 = 'x' * MAX_Py_ssize_t + self.assertRaises(OverflowError, operator.add, s1, '?') + + @bigaddrspacetest + def test_optimized_concat(self): + x = 'x' * MAX_Py_ssize_t + try: + x = x + '?' # this statement uses a fast path in ceval.c + except OverflowError: + pass + else: + self.fail("should have raised OverflowError") + try: + x += '?' # this statement uses a fast path in ceval.c + except OverflowError: + pass + else: + self.fail("should have raised OverflowError") + self.assertEquals(len(x), MAX_Py_ssize_t) + + ### the following test is pending a patch + # (http://mail.python.org/pipermail/python-dev/2006-July/067774.html) + #@bigaddrspacetest + #def test_repeat(self): + # self.assertRaises(OverflowError, operator.mul, 'x', MAX_Py_ssize_t + 1) + + +def test_main(): + test_support.run_unittest(StrTest) + +if __name__ == '__main__': + if len(sys.argv) > 1: + test_support.set_memlimit(sys.argv[1]) + test_main() |