Skip to content

Commit

Permalink
add test configurations that don't contain python2 optional install
Browse files Browse the repository at this point in the history
add test for negative scenario: formatting python2 code
tag python2 only tests
  • Loading branch information
KotlinIsland committed May 4, 2021
1 parent a669b64 commit 12f78f2
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 5 deletions.
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ extend-exclude = '''
[build-system]
requires = ["setuptools>=41.0", "setuptools-scm", "wheel"]
build-backend = "setuptools.build_meta"

[tool.pytest.ini_options]
markers = ['python2', "without_python2"]
27 changes: 27 additions & 0 deletions tests/test_black.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
Iterator,
TypeVar,
)
import pytest
import unittest
from unittest.mock import patch, MagicMock

Expand Down Expand Up @@ -459,6 +460,31 @@ def test_skip_magic_trailing_comma(self) -> None:
)
self.assertEqual(expected, actual, msg)

@pytest.mark.without_python2
def test_python2_should_fail_without_optional_install(self) -> None:
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)
def test_python2_print_function(self) -> None:
source, expected = read_data("python2_print_function")
Expand Down Expand Up @@ -1971,6 +1997,7 @@ def test_bpo_2142_workaround(self) -> None:
actual = diff_header.sub(DETERMINISTIC_HEADER, actual)
self.assertEqual(actual, expected)

@pytest.mark.python2
def test_docstring_reformat_for_py27(self) -> None:
"""
Check that stripping trailing whitespace from Python 2 docstrings
Expand Down
16 changes: 13 additions & 3 deletions tests/test_format.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from unittest.mock import patch

import black
import pytest
from parameterized import parameterized

from tests.util import (
Expand Down Expand Up @@ -46,16 +47,19 @@
"function2",
"function_trailing_comma",
"import_spacing",
"numeric_literals_py2",
"python2",
"python2_unicode_literals",
"remove_parens",
"slices",
"string_prefixes",
"tricky_unicode_symbols",
"tupleassign",
]

SIMPLE_CASES_PY2 = [
"numeric_literals_py2",
"python2",
"python2_unicode_literals",
]

EXPERIMENTAL_STRING_PROCESSING_CASES = [
"cantfit",
"comments7",
Expand Down Expand Up @@ -86,6 +90,12 @@


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)
@patch("black.dump_to_file", dump_to_stderr)
def test_simple_format(self, filename: str) -> None:
Expand Down
6 changes: 4 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ skip_install = True
deps =
-r{toxinidir}/test_requirements.txt
commands =
pip install -e .[d,python2]
pip install -e .[d]
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

[testenv:fuzz]
Expand Down

0 comments on commit 12f78f2

Please sign in to comment.