| 
3 | 3 | from tokenize import (tokenize, _tokenize, untokenize, NUMBER, NAME, OP,  | 
4 | 4 |                      STRING, ENDMARKER, ENCODING, tok_name, detect_encoding,  | 
5 | 5 |                      open as tokenize_open, Untokenizer, generate_tokens,  | 
6 |  | -                     NEWLINE, _generate_tokens_from_c_tokenizer)  | 
 | 6 | +                     NEWLINE, _generate_tokens_from_c_tokenizer, DEDENT)  | 
7 | 7 | from io import BytesIO, StringIO  | 
8 | 8 | import unittest  | 
9 | 9 | from textwrap import dedent  | 
@@ -2512,6 +2512,26 @@ def get_tokens(string):  | 
2512 | 2512 |         self.assertRaises(SyntaxError, get_tokens, "("*1000+"a"+")"*1000)  | 
2513 | 2513 |         self.assertRaises(SyntaxError, get_tokens, "]")  | 
2514 | 2514 | 
 
  | 
 | 2515 | +    def test_max_indent(self):  | 
 | 2516 | +        MAXINDENT = 100  | 
 | 2517 | + | 
 | 2518 | +        def generate_source(indents):  | 
 | 2519 | +            source = ''.join(('  ' * x) + 'if True:\n' for x in range(indents))  | 
 | 2520 | +            source += '  ' * indents + 'pass\n'  | 
 | 2521 | +            return source  | 
 | 2522 | + | 
 | 2523 | +        valid = generate_source(MAXINDENT - 1)  | 
 | 2524 | +        tokens = list(_generate_tokens_from_c_tokenizer(valid))  | 
 | 2525 | +        self.assertEqual(tokens[-1].type, DEDENT)  | 
 | 2526 | +        compile(valid, "<string>", "exec")  | 
 | 2527 | + | 
 | 2528 | +        invalid = generate_source(MAXINDENT)  | 
 | 2529 | +        tokens = list(_generate_tokens_from_c_tokenizer(invalid))  | 
 | 2530 | +        self.assertEqual(tokens[-1].type, NEWLINE)  | 
 | 2531 | +        self.assertRaises(  | 
 | 2532 | +            IndentationError, compile, invalid, "<string>", "exec"  | 
 | 2533 | +        )  | 
 | 2534 | + | 
2515 | 2535 |     def test_continuation_lines_indentation(self):  | 
2516 | 2536 |         def get_tokens(string):  | 
2517 | 2537 |             return [(kind, string) for (kind, string, *_) in _generate_tokens_from_c_tokenizer(string)]  | 
 | 
0 commit comments