add test configurations that don't contain python2 optional install (#2190)
add test for negative scenario: formatting python2 code tag python2 only tests Co-authored-by: KotlinIsland <kotlinisland@users.noreply.github.com>
This commit is contained in:
parent
e42f9921e2
commit
204f76e0c0
@ -25,3 +25,6 @@ extend-exclude = '''
|
|||||||
[build-system]
|
[build-system]
|
||||||
requires = ["setuptools>=41.0", "setuptools-scm", "wheel"]
|
requires = ["setuptools>=41.0", "setuptools-scm", "wheel"]
|
||||||
build-backend = "setuptools.build_meta"
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
markers = ['python2', "without_python2"]
|
@ -24,6 +24,7 @@
|
|||||||
Iterator,
|
Iterator,
|
||||||
TypeVar,
|
TypeVar,
|
||||||
)
|
)
|
||||||
|
import pytest
|
||||||
import unittest
|
import unittest
|
||||||
from unittest.mock import patch, MagicMock
|
from unittest.mock import patch, MagicMock
|
||||||
|
|
||||||
@ -459,6 +460,34 @@ def test_skip_magic_trailing_comma(self) -> None:
|
|||||||
)
|
)
|
||||||
self.assertEqual(expected, actual, msg)
|
self.assertEqual(expected, actual, msg)
|
||||||
|
|
||||||
|
@pytest.mark.without_python2
|
||||||
|
def test_python2_should_fail_without_optional_install(self) -> None:
|
||||||
|
# python 3.7 and below will install typed-ast and will be able to parse Python 2
|
||||||
|
if sys.version_info < (3, 8):
|
||||||
|
return
|
||||||
|
source = "x = 1234l"
|
||||||
|
tmp_file = Path(black.dump_to_file(source))
|
||||||
|
try:
|
||||||
|
runner = BlackRunner()
|
||||||
|
result = runner.invoke(black.main, [str(tmp_file)])
|
||||||
|
self.assertEqual(result.exit_code, 123)
|
||||||
|
finally:
|
||||||
|
os.unlink(tmp_file)
|
||||||
|
actual = (
|
||||||
|
runner.stderr_bytes.decode()
|
||||||
|
.replace("\n", "")
|
||||||
|
.replace("\\n", "")
|
||||||
|
.replace("\\r", "")
|
||||||
|
.replace("\r", "")
|
||||||
|
)
|
||||||
|
msg = (
|
||||||
|
"The requested source code has invalid Python 3 syntax."
|
||||||
|
"If you are trying to format Python 2 files please reinstall Black"
|
||||||
|
" with the 'python2' extra: `python3 -m pip install black[python2]`."
|
||||||
|
)
|
||||||
|
self.assertIn(msg, actual)
|
||||||
|
|
||||||
|
@pytest.mark.python2
|
||||||
@patch("black.dump_to_file", dump_to_stderr)
|
@patch("black.dump_to_file", dump_to_stderr)
|
||||||
def test_python2_print_function(self) -> None:
|
def test_python2_print_function(self) -> None:
|
||||||
source, expected = read_data("python2_print_function")
|
source, expected = read_data("python2_print_function")
|
||||||
@ -1971,6 +2000,7 @@ def test_bpo_2142_workaround(self) -> None:
|
|||||||
actual = diff_header.sub(DETERMINISTIC_HEADER, actual)
|
actual = diff_header.sub(DETERMINISTIC_HEADER, actual)
|
||||||
self.assertEqual(actual, expected)
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
@pytest.mark.python2
|
||||||
def test_docstring_reformat_for_py27(self) -> None:
|
def test_docstring_reformat_for_py27(self) -> None:
|
||||||
"""
|
"""
|
||||||
Check that stripping trailing whitespace from Python 2 docstrings
|
Check that stripping trailing whitespace from Python 2 docstrings
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
import black
|
import black
|
||||||
|
import pytest
|
||||||
from parameterized import parameterized
|
from parameterized import parameterized
|
||||||
|
|
||||||
from tests.util import (
|
from tests.util import (
|
||||||
@ -46,9 +47,6 @@
|
|||||||
"function2",
|
"function2",
|
||||||
"function_trailing_comma",
|
"function_trailing_comma",
|
||||||
"import_spacing",
|
"import_spacing",
|
||||||
"numeric_literals_py2",
|
|
||||||
"python2",
|
|
||||||
"python2_unicode_literals",
|
|
||||||
"remove_parens",
|
"remove_parens",
|
||||||
"slices",
|
"slices",
|
||||||
"string_prefixes",
|
"string_prefixes",
|
||||||
@ -56,6 +54,12 @@
|
|||||||
"tupleassign",
|
"tupleassign",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
SIMPLE_CASES_PY2 = [
|
||||||
|
"numeric_literals_py2",
|
||||||
|
"python2",
|
||||||
|
"python2_unicode_literals",
|
||||||
|
]
|
||||||
|
|
||||||
EXPERIMENTAL_STRING_PROCESSING_CASES = [
|
EXPERIMENTAL_STRING_PROCESSING_CASES = [
|
||||||
"cantfit",
|
"cantfit",
|
||||||
"comments7",
|
"comments7",
|
||||||
@ -86,6 +90,12 @@
|
|||||||
|
|
||||||
|
|
||||||
class TestSimpleFormat(BlackBaseTestCase):
|
class TestSimpleFormat(BlackBaseTestCase):
|
||||||
|
@parameterized.expand(SIMPLE_CASES_PY2)
|
||||||
|
@pytest.mark.python2
|
||||||
|
@patch("black.dump_to_file", dump_to_stderr)
|
||||||
|
def test_simple_format_py2(self, filename: str) -> None:
|
||||||
|
self.check_file(filename, DEFAULT_MODE)
|
||||||
|
|
||||||
@parameterized.expand(SIMPLE_CASES)
|
@parameterized.expand(SIMPLE_CASES)
|
||||||
@patch("black.dump_to_file", dump_to_stderr)
|
@patch("black.dump_to_file", dump_to_stderr)
|
||||||
def test_simple_format(self, filename: str) -> None:
|
def test_simple_format(self, filename: str) -> None:
|
||||||
|
6
tox.ini
6
tox.ini
@ -7,9 +7,11 @@ skip_install = True
|
|||||||
deps =
|
deps =
|
||||||
-r{toxinidir}/test_requirements.txt
|
-r{toxinidir}/test_requirements.txt
|
||||||
commands =
|
commands =
|
||||||
pip install -e .[d,python2]
|
pip install -e .[d]
|
||||||
coverage erase
|
coverage erase
|
||||||
coverage run -m pytest tests {posargs}
|
coverage run -m pytest tests -m "not python2" {posargs}
|
||||||
|
pip install -e .[d,python2]
|
||||||
|
coverage run -m pytest tests -m "not without_python2" {posargs}
|
||||||
coverage report
|
coverage report
|
||||||
|
|
||||||
[testenv:fuzz]
|
[testenv:fuzz]
|
||||||
|
Loading…
Reference in New Issue
Block a user