X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/3500e1cda5bef73ddc7eaf79be6c67c918738936..8c22d232b56104376a12d1e68eaf216d04979830:/tests/test_format.py diff --git a/tests/test_format.py b/tests/test_format.py index a659382..00cd07f 100644 --- a/tests/test_format.py +++ b/tests/test_format.py @@ -1,5 +1,5 @@ from dataclasses import replace -from typing import Any, Iterator +from typing import Any, Iterator, List from unittest.mock import patch import pytest @@ -14,7 +14,7 @@ from tests.util import ( read_data, ) -SIMPLE_CASES = [ +SIMPLE_CASES: List[str] = [ "beginning_backslash", "bracketmatch", "class_blank_parentheses", @@ -55,13 +55,7 @@ SIMPLE_CASES = [ "tupleassign", ] -SIMPLE_CASES_PY2 = [ - "numeric_literals_py2", - "python2", - "python2_unicode_literals", -] - -EXPERIMENTAL_STRING_PROCESSING_CASES = [ +EXPERIMENTAL_STRING_PROCESSING_CASES: List[str] = [ "cantfit", "comments7", "long_strings", @@ -70,8 +64,18 @@ EXPERIMENTAL_STRING_PROCESSING_CASES = [ "percent_precedence", ] +PY310_CASES: List[str] = [ + "pattern_matching_simple", + "pattern_matching_complex", + "pattern_matching_extras", + "pattern_matching_style", + "pattern_matching_generic", + "parenthesized_context_managers", +] + +PREVIEW_CASES: List[str] = [] -SOURCES = [ +SOURCES: List[str] = [ "src/black/__init__.py", "src/black/__main__.py", "src/black/brackets.py", @@ -93,6 +97,8 @@ SOURCES = [ "src/black/strings.py", "src/black/trans.py", "src/blackd/__init__.py", + "src/black_primer/cli.py", + "src/black_primer/lib.py", "src/blib2to3/pygram.py", "src/blib2to3/pytree.py", "src/blib2to3/pgen2/conv.py", @@ -125,12 +131,6 @@ def check_file(filename: str, mode: black.Mode, *, data: bool = True) -> None: assert_format(source, expected, mode, fast=False) -@pytest.mark.parametrize("filename", SIMPLE_CASES_PY2) -@pytest.mark.python2 -def test_simple_format_py2(filename: str) -> None: - check_file(filename, DEFAULT_MODE) - - @pytest.mark.parametrize("filename", SIMPLE_CASES) def test_simple_format(filename: str) -> None: check_file(filename, DEFAULT_MODE) @@ -141,6 +141,11 @@ def test_experimental_format(filename: str) -> None: check_file(filename, black.Mode(experimental_string_processing=True)) +@pytest.mark.parametrize("filename", PREVIEW_CASES) +def test_preview_format(filename: str) -> None: + check_file(filename, black.Mode(preview=True)) + + @pytest.mark.parametrize("filename", SOURCES) def test_source_is_formatted(filename: str) -> None: path = THIS_DIR.parent / filename @@ -185,6 +190,37 @@ def test_pep_570() -> None: assert_format(source, expected, minimum_version=(3, 8)) +@pytest.mark.parametrize("filename", PY310_CASES) +def test_python_310(filename: str) -> None: + source, expected = read_data(filename) + mode = black.Mode(target_versions={black.TargetVersion.PY310}) + assert_format(source, expected, mode, minimum_version=(3, 10)) + + +def test_patma_invalid() -> None: + source, expected = read_data("pattern_matching_invalid") + mode = black.Mode(target_versions={black.TargetVersion.PY310}) + with pytest.raises(black.parsing.InvalidInput) as exc_info: + assert_format(source, expected, mode, minimum_version=(3, 10)) + + exc_info.match("Cannot parse: 10:11") + + +def test_patma_hint() -> None: + source, expected = read_data("pattern_matching_simple") + mode = black.Mode(target_versions={black.TargetVersion.PY39}) + with pytest.raises(black.parsing.InvalidInput) as exc_info: + assert_format(source, expected, mode, minimum_version=(3, 10)) + + exc_info.match(black.parsing.PY310_HINT) + + +def test_python_2_hint() -> None: + with pytest.raises(black.parsing.InvalidInput) as exc_info: + assert_format("print 'daylily'", "print 'daylily'") + exc_info.match(black.parsing.PY2_HINT) + + def test_docstring_no_string_normalization() -> None: """Like test_docstring but with string normalization off.""" source, expected = read_data("docstring_no_string_normalization") @@ -211,13 +247,6 @@ def test_numeric_literals_ignoring_underscores() -> None: assert_format(source, expected, mode) -@pytest.mark.python2 -def test_python2_print_function() -> None: - source, expected = read_data("python2_print_function") - mode = replace(DEFAULT_MODE, target_versions={black.TargetVersion.PY27}) - assert_format(source, expected, mode) - - def test_stub() -> None: mode = replace(DEFAULT_MODE, is_pyi=True) source, expected = read_data("stub.pyi")