X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/73bd7038fbefdb1c6a61fa1edf16ff61613050a5..4c4a51cb6bd01e2e813354502b8327285fc00e75:/tests/test_black.py?ds=sidebyside diff --git a/tests/test_black.py b/tests/test_black.py index 10efbcf..e6a6647 100644 --- a/tests/test_black.py +++ b/tests/test_black.py @@ -29,6 +29,8 @@ except ImportError: 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__) @@ -158,6 +160,16 @@ class BlackTestCase(unittest.TestCase): 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 = "" @@ -177,23 +189,44 @@ class BlackTestCase(unittest.TestCase): 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) @@ -230,15 +263,6 @@ class BlackTestCase(unittest.TestCase): 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") @@ -1347,6 +1371,13 @@ class BlackTestCase(unittest.TestCase): 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( @@ -1363,6 +1394,7 @@ class BlackTestCase(unittest.TestCase): 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"), @@ -1370,13 +1402,37 @@ class BlackTestCase(unittest.TestCase): ] 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 = [ @@ -1393,7 +1449,12 @@ class BlackTestCase(unittest.TestCase): 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)) @@ -1401,6 +1462,7 @@ class BlackTestCase(unittest.TestCase): 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 = [ @@ -1414,7 +1476,12 @@ class BlackTestCase(unittest.TestCase): 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)) @@ -1459,13 +1526,18 @@ class BlackTestCase(unittest.TestCase): 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() @@ -1475,7 +1547,11 @@ class BlackTestCase(unittest.TestCase): # 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()