import pytest
import unittest
from unittest.mock import patch, MagicMock
+from parameterized import parameterized
import click
from click import unstyle
versions = black.detect_target_versions(root)
self.assertIn(black.TargetVersion.PY38, versions)
+ @parameterized.expand([(3, 9), (3, 10)])
+ def test_pep_572_newer_syntax(self, major: int, minor: int) -> None:
+ source, expected = read_data(f"pep_572_py{major}{minor}")
+ actual = fs(source, mode=DEFAULT_MODE)
+ self.assertFormatEqual(expected, actual)
+ if sys.version_info >= (major, minor):
+ black.assert_equivalent(source, actual)
+
def test_expression_ff(self) -> None:
source, expected = read_data("expression")
tmp_file = Path(black.dump_to_file(source))
None,
report,
gitignore,
+ verbose=False,
+ quiet=False,
)
)
self.assertEqual(sorted(expected), sorted(sources))
# __BLACK_STDIN_FILENAME__ should have been stripped
report.done.assert_called_with(expected, black.Changed.YES)
+ def test_reformat_one_with_stdin_filename_ipynb(self) -> None:
+ with patch(
+ "black.format_stdin_to_stdout",
+ return_value=lambda *args, **kwargs: black.Changed.YES,
+ ) as fsts:
+ report = MagicMock()
+ p = "foo.ipynb"
+ path = Path(f"__BLACK_STDIN_FILENAME__{p}")
+ expected = Path(p)
+ black.reformat_one(
+ path,
+ fast=True,
+ write_back=black.WriteBack.YES,
+ mode=DEFAULT_MODE,
+ report=report,
+ )
+ fsts.assert_called_once_with(
+ fast=True,
+ write_back=black.WriteBack.YES,
+ mode=replace(DEFAULT_MODE, is_ipynb=True),
+ )
+ # __BLACK_STDIN_FILENAME__ should have been stripped
+ report.done.assert_called_with(expected, black.Changed.YES)
+
def test_reformat_one_with_stdin_and_existing_path(self) -> None:
with patch(
"black.format_stdin_to_stdout",
None,
report,
gitignore,
+ verbose=False,
+ quiet=False,
)
)
self.assertEqual(sorted(expected), sorted(sources))
None,
report,
root_gitignore,
+ verbose=False,
+ quiet=False,
)
)
self.assertEqual(sorted(expected), sorted(sources))
+ def test_invalid_gitignore(self) -> None:
+ path = THIS_DIR / "data" / "invalid_gitignore_tests"
+ empty_config = path / "pyproject.toml"
+ result = BlackRunner().invoke(
+ black.main, ["--verbose", "--config", str(empty_config), str(path)]
+ )
+ assert result.exit_code == 1
+ assert result.stderr_bytes is not None
+
+ gitignore = path / ".gitignore"
+ assert f"Could not parse {gitignore}" in result.stderr_bytes.decode()
+
+ def test_invalid_nested_gitignore(self) -> None:
+ path = THIS_DIR / "data" / "invalid_nested_gitignore_tests"
+ empty_config = path / "pyproject.toml"
+ result = BlackRunner().invoke(
+ black.main, ["--verbose", "--config", str(empty_config), str(path)]
+ )
+ assert result.exit_code == 1
+ assert result.stderr_bytes is not None
+
+ gitignore = path / "a" / ".gitignore"
+ assert f"Could not parse {gitignore}" in result.stderr_bytes.decode()
+
def test_empty_include(self) -> None:
path = THIS_DIR / "data" / "include_exclude_tests"
report = black.Report()
None,
report,
gitignore,
+ verbose=False,
+ quiet=False,
)
)
self.assertEqual(sorted(expected), sorted(sources))
None,
report,
gitignore,
+ verbose=False,
+ quiet=False,
)
)
self.assertEqual(sorted(expected), sorted(sources))
None,
report,
gitignore,
+ verbose=False,
+ quiet=False,
)
)
except ValueError as ve:
None,
report,
gitignore,
+ verbose=False,
+ quiet=False,
)
)
path.iterdir.assert_called()