Show More
@@ -508,8 +508,11 b' def make_tokens_by_line(lines:List[str]):' | |||
|
508 | 508 | # reexported from token on 3.7+ |
|
509 | 509 | NEWLINE, NL = tokenize.NEWLINE, tokenize.NL # type: ignore |
|
510 | 510 | tokens_by_line:List[List[Any]] = [[]] |
|
511 |
if len(lines) > 1 and not lines[0].endswith(( |
|
|
512 | warnings.warn("`make_tokens_by_line` received a list of lines which do not have lineending markers ('\\n', '\\r', '\\r\\n', '\\x0b', '\\x0c'), behavior will be unspecified") | |
|
511 | if len(lines) > 1 and not lines[0].endswith(("\n", "\r", "\r\n", "\x0b", "\x0c")): | |
|
512 | warnings.warn( | |
|
513 | "`make_tokens_by_line` received a list of lines which do not have lineending markers ('\\n', '\\r', '\\r\\n', '\\x0b', '\\x0c'), behavior will be unspecified", | |
|
514 | stacklevel=2, | |
|
515 | ) | |
|
513 | 516 | parenlev = 0 |
|
514 | 517 | try: |
|
515 | 518 | for token in tokenize.generate_tokens(iter(lines).__next__): |
@@ -782,9 +785,6 b' class MaybeAsyncCompile(Compile):' | |||
|
782 | 785 | super().__init__() |
|
783 | 786 | self.flags |= extra_flags |
|
784 | 787 | |
|
785 | def __call__(self, *args, **kwds): | |
|
786 | return compile(*args, **kwds) | |
|
787 | ||
|
788 | 788 | |
|
789 | 789 | class MaybeAsyncCommandCompiler(CommandCompiler): |
|
790 | 790 | def __init__(self, extra_flags=0): |
@@ -4,6 +4,7 b' Line-based transformers are the simpler ones; token-based transformers are' | |||
|
4 | 4 | more complex. See test_inputtransformer2_line for tests for line-based |
|
5 | 5 | transformations. |
|
6 | 6 | """ |
|
7 | import platform | |
|
7 | 8 | import string |
|
8 | 9 | import sys |
|
9 | 10 | from textwrap import dedent |
@@ -319,7 +320,16 b' def test_check_complete():' | |||
|
319 | 320 | assert cc("def f():\n x=0\n \\\n ") == ("incomplete", 2) |
|
320 | 321 | |
|
321 | 322 | |
|
322 | def test_check_complete_II(): | |
|
323 | @pytest.mark.skipif(platform.python_implementation() == "PyPy", reason="fail on pypy") | |
|
324 | @pytest.mark.parametrize( | |
|
325 | "value, expected", | |
|
326 | [ | |
|
327 | ('''def foo():\n """''', ("incomplete", 4)), | |
|
328 | ("""async with example:\n pass""", ("incomplete", 4)), | |
|
329 | ("""async with example:\n pass\n """, ("complete", None)), | |
|
330 | ], | |
|
331 | ) | |
|
332 | def test_check_complete_II(value, expected): | |
|
323 | 333 | """ |
|
324 | 334 | Test that multiple line strings are properly handled. |
|
325 | 335 | |
@@ -327,25 +337,31 b' def test_check_complete_II():' | |||
|
327 | 337 | |
|
328 | 338 | """ |
|
329 | 339 | cc = ipt2.TransformerManager().check_complete |
|
330 | assert cc('''def foo():\n """''') == ("incomplete", 4) | |
|
331 | ||
|
332 | ||
|
333 | def test_check_complete_invalidates_sunken_brackets(): | |
|
340 | assert cc(value) == expected | |
|
341 | ||
|
342 | ||
|
343 | @pytest.mark.parametrize( | |
|
344 | "value, expected", | |
|
345 | [ | |
|
346 | (")", ("invalid", None)), | |
|
347 | ("]", ("invalid", None)), | |
|
348 | ("}", ("invalid", None)), | |
|
349 | (")(", ("invalid", None)), | |
|
350 | ("][", ("invalid", None)), | |
|
351 | ("}{", ("invalid", None)), | |
|
352 | ("]()(", ("invalid", None)), | |
|
353 | ("())(", ("invalid", None)), | |
|
354 | (")[](", ("invalid", None)), | |
|
355 | ("()](", ("invalid", None)), | |
|
356 | ], | |
|
357 | ) | |
|
358 | def test_check_complete_invalidates_sunken_brackets(value, expected): | |
|
334 | 359 | """ |
|
335 | 360 | Test that a single line with more closing brackets than the opening ones is |
|
336 | 361 | interpreted as invalid |
|
337 | 362 | """ |
|
338 | 363 | cc = ipt2.TransformerManager().check_complete |
|
339 | assert cc(")") == ("invalid", None) | |
|
340 | assert cc("]") == ("invalid", None) | |
|
341 | assert cc("}") == ("invalid", None) | |
|
342 | assert cc(")(") == ("invalid", None) | |
|
343 | assert cc("][") == ("invalid", None) | |
|
344 | assert cc("}{") == ("invalid", None) | |
|
345 | assert cc("]()(") == ("invalid", None) | |
|
346 | assert cc("())(") == ("invalid", None) | |
|
347 | assert cc(")[](") == ("invalid", None) | |
|
348 | assert cc("()](") == ("invalid", None) | |
|
364 | assert cc(value) == expected | |
|
349 | 365 | |
|
350 | 366 | |
|
351 | 367 | def test_null_cleanup_transformer(): |
General Comments 0
You need to be logged in to leave comments.
Login now