summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-08-28 19:24:02 (GMT)
committerGitHub <noreply@github.com>2021-08-28 19:24:02 (GMT)
commit779b9aef4fb2750f57ce07f0efbc8ce8406e43ab (patch)
treeb0dbca84a7ba39e26e24cdd14dcb306444420184 /Lib/test
parent2a80893e5c023a73ccd32cc319f4f0404f548c00 (diff)
downloadcpython-779b9aef4fb2750f57ce07f0efbc8ce8406e43ab.zip
cpython-779b9aef4fb2750f57ce07f0efbc8ce8406e43ab.tar.gz
cpython-779b9aef4fb2750f57ce07f0efbc8ce8406e43ab.tar.bz2
bpo-25130: Make unit-test about restricting the maximum number of nested blocks cpython-only (GH-28002) (GH-28016)
PyPy and potentially other implementations have different or no contraints on the number of blocks that can be statically nested. move the test that checks for this behaviour into a unit test and mark it as CPython-only. (cherry picked from commit eb263f9a356f5c5f21b8d5ce20bac92f31c40cad) Co-authored-by: Carl Friedrich Bolz-Tereick <cfbolz@gmx.de>
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_syntax.py67
1 files changed, 35 insertions, 32 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index 43780ce..be8be89 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -629,38 +629,6 @@ isn't, there should be a syntax error.
...
SyntaxError: 'break' outside loop
-This raises a SyntaxError, it used to raise a SystemError.
-Context for this change can be found on issue #27514
-
-In 2.5 there was a missing exception and an assert was triggered in a debug
-build. The number of blocks must be greater than CO_MAXBLOCKS. SF #1565514
-
- >>> while 1:
- ... while 2:
- ... while 3:
- ... while 4:
- ... while 5:
- ... while 6:
- ... while 8:
- ... while 9:
- ... while 10:
- ... while 11:
- ... while 12:
- ... while 13:
- ... while 14:
- ... while 15:
- ... while 16:
- ... while 17:
- ... while 18:
- ... while 19:
- ... while 20:
- ... while 21:
- ... while 22:
- ... break
- Traceback (most recent call last):
- ...
- SyntaxError: too many statically nested blocks
-
Misuse of the nonlocal and global statement can lead to a few unique syntax errors.
>>> def f():
@@ -1550,6 +1518,41 @@ case(34)
lineno=3
)
+ @support.cpython_only
+ def test_syntax_error_on_deeply_nested_blocks(self):
+ # This raises a SyntaxError, it used to raise a SystemError. Context
+ # for this change can be found on issue #27514
+
+ # In 2.5 there was a missing exception and an assert was triggered in a
+ # debug build. The number of blocks must be greater than CO_MAXBLOCKS.
+ # SF #1565514
+
+ source = """
+while 1:
+ while 2:
+ while 3:
+ while 4:
+ while 5:
+ while 6:
+ while 8:
+ while 9:
+ while 10:
+ while 11:
+ while 12:
+ while 13:
+ while 14:
+ while 15:
+ while 16:
+ while 17:
+ while 18:
+ while 19:
+ while 20:
+ while 21:
+ while 22:
+ break
+"""
+ self._check_error(source, "too many statically nested blocks")
+
def test_main():
support.run_unittest(SyntaxTestCase)