else:
has_blackd_deps = True
+from pathspec import PathSpec
+
ff = partial(black.format_file_in_place, mode=black.FileMode(), fast=True)
fs = partial(black.format_str, mode=black.FileMode())
THIS_FILE = Path(__file__)
result = runner.invoke(black.main, args)
self.assertEqual(result.exit_code, exit_code, msg=runner.stderr_bytes.decode())
+ @patch("black.dump_to_file", dump_to_stderr)
+ def checkSourceFile(self, name: str) -> None:
+ path = THIS_DIR.parent / name
+ source, expected = read_data(str(path), data=False)
+ actual = fs(source)
+ self.assertFormatEqual(expected, actual)
+ black.assert_equivalent(source, actual)
+ black.assert_stable(source, actual, black.FileMode())
+ self.assertFalse(ff(path))
+
@patch("black.dump_to_file", dump_to_stderr)
def test_empty(self) -> None:
source = expected = ""
os.unlink(tmp_file)
self.assertFormatEqual(expected, actual)
- @patch("black.dump_to_file", dump_to_stderr)
def test_self(self) -> None:
- source, expected = read_data("test_black", data=False)
- actual = fs(source)
- self.assertFormatEqual(expected, actual)
- black.assert_equivalent(source, actual)
- black.assert_stable(source, actual, black.FileMode())
- self.assertFalse(ff(THIS_FILE))
+ self.checkSourceFile("tests/test_black.py")
- @patch("black.dump_to_file", dump_to_stderr)
def test_black(self) -> None:
- source, expected = read_data("../black", data=False)
- actual = fs(source)
- self.assertFormatEqual(expected, actual)
- black.assert_equivalent(source, actual)
- black.assert_stable(source, actual, black.FileMode())
- self.assertFalse(ff(THIS_DIR / ".." / "black.py"))
+ self.checkSourceFile("black.py")
+
+ def test_pygram(self) -> None:
+ self.checkSourceFile("blib2to3/pygram.py")
+
+ def test_pytree(self) -> None:
+ self.checkSourceFile("blib2to3/pytree.py")
+
+ def test_conv(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/conv.py")
+
+ def test_driver(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/driver.py")
+
+ def test_grammar(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/grammar.py")
+
+ def test_literals(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/literals.py")
+
+ def test_parse(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/parse.py")
+
+ def test_pgen(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/pgen.py")
+
+ def test_tokenize(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/tokenize.py")
+
+ def test_token(self) -> None:
+ self.checkSourceFile("blib2to3/pgen2/token.py")
+
+ def test_setup(self) -> None:
+ self.checkSourceFile("setup.py")
def test_piping(self) -> None:
source, expected = read_data("../black", data=False)
actual = actual.rstrip() + "\n" # the diff output has a trailing space
self.assertEqual(expected, actual)
- @patch("black.dump_to_file", dump_to_stderr)
- def test_setup(self) -> None:
- source, expected = read_data("../setup", data=False)
- actual = fs(source)
- self.assertFormatEqual(expected, actual)
- black.assert_equivalent(source, actual)
- black.assert_stable(source, actual, black.FileMode())
- self.assertFalse(ff(THIS_DIR / ".." / "setup.py"))
-
@patch("black.dump_to_file", dump_to_stderr)
def test_function(self) -> None:
source, expected = read_data("function")
self.assertIn(path, pyi_cache)
self.assertNotIn(path, normal_cache)
+ def test_collections(self) -> None:
+ source, expected = read_data("collections")
+ actual = fs(source)
+ self.assertFormatEqual(expected, actual)
+ black.assert_equivalent(source, actual)
+ black.assert_stable(source, actual, black.FileMode())
+
def test_pipe_force_py36(self) -> None:
source, expected = read_data("force_py36")
result = CliRunner().invoke(
include = re.compile(r"\.pyi?$")
exclude = re.compile(r"/exclude/|/\.definitely_exclude/")
report = black.Report()
+ gitignore = PathSpec.from_lines("gitwildmatch", [])
sources: List[Path] = []
expected = [
Path(path / "b/dont_exclude/a.py"),
]
this_abs = THIS_DIR.resolve()
sources.extend(
- black.gen_python_files_in_dir(path, this_abs, include, exclude, report)
+ black.gen_python_files_in_dir(
+ path, this_abs, include, exclude, report, gitignore
+ )
+ )
+ self.assertEqual(sorted(expected), sorted(sources))
+
+ def test_gitignore_exclude(self) -> None:
+ path = THIS_DIR / "data" / "include_exclude_tests"
+ include = re.compile(r"\.pyi?$")
+ exclude = re.compile(r"")
+ report = black.Report()
+ gitignore = PathSpec.from_lines(
+ "gitwildmatch", ["exclude/", ".definitely_exclude"]
+ )
+ sources: List[Path] = []
+ expected = [
+ Path(path / "b/dont_exclude/a.py"),
+ Path(path / "b/dont_exclude/a.pyi"),
+ ]
+ this_abs = THIS_DIR.resolve()
+ sources.extend(
+ black.gen_python_files_in_dir(
+ path, this_abs, include, exclude, report, gitignore
+ )
)
self.assertEqual(sorted(expected), sorted(sources))
def test_empty_include(self) -> None:
path = THIS_DIR / "data" / "include_exclude_tests"
report = black.Report()
+ gitignore = PathSpec.from_lines("gitwildmatch", [])
empty = re.compile(r"")
sources: List[Path] = []
expected = [
this_abs = THIS_DIR.resolve()
sources.extend(
black.gen_python_files_in_dir(
- path, this_abs, empty, re.compile(black.DEFAULT_EXCLUDES), report
+ path,
+ this_abs,
+ empty,
+ re.compile(black.DEFAULT_EXCLUDES),
+ report,
+ gitignore,
)
)
self.assertEqual(sorted(expected), sorted(sources))
def test_empty_exclude(self) -> None:
path = THIS_DIR / "data" / "include_exclude_tests"
report = black.Report()
+ gitignore = PathSpec.from_lines("gitwildmatch", [])
empty = re.compile(r"")
sources: List[Path] = []
expected = [
this_abs = THIS_DIR.resolve()
sources.extend(
black.gen_python_files_in_dir(
- path, this_abs, re.compile(black.DEFAULT_INCLUDES), empty, report
+ path,
+ this_abs,
+ re.compile(black.DEFAULT_INCLUDES),
+ empty,
+ report,
+ gitignore,
)
)
self.assertEqual(sorted(expected), sorted(sources))
include = re.compile(black.DEFAULT_INCLUDES)
exclude = re.compile(black.DEFAULT_EXCLUDES)
report = black.Report()
+ gitignore = PathSpec.from_lines("gitwildmatch", [])
# `child` should behave like a symlink which resolved path is clearly
# outside of the `root` directory.
path.iterdir.return_value = [child]
child.resolve.return_value = Path("/a/b/c")
child.is_symlink.return_value = True
try:
- list(black.gen_python_files_in_dir(path, root, include, exclude, report))
+ list(
+ black.gen_python_files_in_dir(
+ path, root, include, exclude, report, gitignore
+ )
+ )
except ValueError as ve:
self.fail(f"`get_python_files_in_dir()` failed: {ve}")
path.iterdir.assert_called_once()
# outside of the `root` directory.
child.is_symlink.return_value = False
with self.assertRaises(ValueError):
- list(black.gen_python_files_in_dir(path, root, include, exclude, report))
+ list(
+ black.gen_python_files_in_dir(
+ path, root, include, exclude, report, gitignore
+ )
+ )
path.iterdir.assert_called()
self.assertEqual(path.iterdir.call_count, 2)
child.resolve.assert_called()