mirror of
https://github.com/python/cpython.git
synced 2025-08-01 23:53:15 +00:00
Issue 1881. Increased the stack limit from 500 to 1500. Also added
a test for this (and because of this test you'll see in stderr a message that parser.c sends before raising MemoryError). Thanks Ralf Schmitt.
This commit is contained in:
parent
7832d4d534
commit
fc2d01032f
3 changed files with 21 additions and 1 deletions
|
@ -480,11 +480,28 @@ class CompileTestCase(unittest.TestCase):
|
|||
st = parser.suite('a = u"\u1"')
|
||||
self.assertRaises(SyntaxError, parser.compilest, st)
|
||||
|
||||
class ParserStackLimitTestCase(unittest.TestCase):
|
||||
"""try to push the parser to/over it's limits.
|
||||
see http://bugs.python.org/issue1881 for a discussion
|
||||
"""
|
||||
def _nested_expression(self, level):
|
||||
return "["*level+"]"*level
|
||||
|
||||
def test_deeply_nested_list(self):
|
||||
e = self._nested_expression(99)
|
||||
st = parser.expr(e)
|
||||
st.compile()
|
||||
|
||||
def test_trigger_memory_error(self):
|
||||
e = self._nested_expression(100)
|
||||
self.assertRaises(MemoryError, parser.expr, e)
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(
|
||||
RoundtripLegalSyntaxTestCase,
|
||||
IllegalSyntaxTestCase,
|
||||
CompileTestCase,
|
||||
ParserStackLimitTestCase,
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue