mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
gh-94808: Coverage: Test that maximum indentation level is handled (#95926)
* gh-94808: Coverage: Test that maximum indentation level is handled * Use "compile" rather than "exec"
This commit is contained in:
parent
e2e6b95c03
commit
23e83a8465
1 changed files with 21 additions and 1 deletions
|
@ -3,7 +3,7 @@ from test.support import os_helper
|
|||
from tokenize import (tokenize, _tokenize, untokenize, NUMBER, NAME, OP,
|
||||
STRING, ENDMARKER, ENCODING, tok_name, detect_encoding,
|
||||
open as tokenize_open, Untokenizer, generate_tokens,
|
||||
NEWLINE, _generate_tokens_from_c_tokenizer)
|
||||
NEWLINE, _generate_tokens_from_c_tokenizer, DEDENT)
|
||||
from io import BytesIO, StringIO
|
||||
import unittest
|
||||
from textwrap import dedent
|
||||
|
@ -2512,6 +2512,26 @@ async def f():
|
|||
self.assertRaises(SyntaxError, get_tokens, "("*1000+"a"+")"*1000)
|
||||
self.assertRaises(SyntaxError, get_tokens, "]")
|
||||
|
||||
def test_max_indent(self):
|
||||
MAXINDENT = 100
|
||||
|
||||
def generate_source(indents):
|
||||
source = ''.join((' ' * x) + 'if True:\n' for x in range(indents))
|
||||
source += ' ' * indents + 'pass\n'
|
||||
return source
|
||||
|
||||
valid = generate_source(MAXINDENT - 1)
|
||||
tokens = list(_generate_tokens_from_c_tokenizer(valid))
|
||||
self.assertEqual(tokens[-1].type, DEDENT)
|
||||
compile(valid, "<string>", "exec")
|
||||
|
||||
invalid = generate_source(MAXINDENT)
|
||||
tokens = list(_generate_tokens_from_c_tokenizer(invalid))
|
||||
self.assertEqual(tokens[-1].type, NEWLINE)
|
||||
self.assertRaises(
|
||||
IndentationError, compile, invalid, "<string>", "exec"
|
||||
)
|
||||
|
||||
def test_continuation_lines_indentation(self):
|
||||
def get_tokens(string):
|
||||
return [(kind, string) for (kind, string, *_) in _generate_tokens_from_c_tokenizer(string)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue