From c7f6881857f0ffd67bb855de14d8495de11230eb Mon Sep 17 00:00:00 2001 From: Antonio Ossa Guerra Date: Mon, 17 Oct 2022 10:11:19 -0300 Subject: [PATCH] Test root gitignore behavior on multiple sources The test creates a fake context and collects the files from two sources. Both sources are directories in the root path, where a gitignore file ignores a filename that is present in both subdirs. Before the fix introduced in the previous commit, this test was expected to fail: a file that should be ignores was still visible for Black. Now, the test is passed. Signed-off-by: Antonio Ossa Guerra --- .../gitignore_used_on_multiple_sources/.gitignore | 1 + .../data/gitignore_used_on_multiple_sources/dir1/a.py | 0 .../data/gitignore_used_on_multiple_sources/dir1/b.py | 0 .../data/gitignore_used_on_multiple_sources/dir2/a.py | 0 .../data/gitignore_used_on_multiple_sources/dir2/b.py | 0 tests/test_black.py | 11 +++++++++++ 6 files changed, 12 insertions(+) create mode 100644 tests/data/gitignore_used_on_multiple_sources/.gitignore create mode 100644 tests/data/gitignore_used_on_multiple_sources/dir1/a.py create mode 100644 tests/data/gitignore_used_on_multiple_sources/dir1/b.py create mode 100644 tests/data/gitignore_used_on_multiple_sources/dir2/a.py create mode 100644 tests/data/gitignore_used_on_multiple_sources/dir2/b.py diff --git a/tests/data/gitignore_used_on_multiple_sources/.gitignore b/tests/data/gitignore_used_on_multiple_sources/.gitignore new file mode 100644 index 00000000000..2987e7bb646 --- /dev/null +++ b/tests/data/gitignore_used_on_multiple_sources/.gitignore @@ -0,0 +1 @@ +a.py diff --git a/tests/data/gitignore_used_on_multiple_sources/dir1/a.py b/tests/data/gitignore_used_on_multiple_sources/dir1/a.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/data/gitignore_used_on_multiple_sources/dir1/b.py b/tests/data/gitignore_used_on_multiple_sources/dir1/b.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/data/gitignore_used_on_multiple_sources/dir2/a.py b/tests/data/gitignore_used_on_multiple_sources/dir2/a.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/data/gitignore_used_on_multiple_sources/dir2/b.py b/tests/data/gitignore_used_on_multiple_sources/dir2/b.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/test_black.py b/tests/test_black.py index 5d0175d9d66..d66305becf0 100644 --- a/tests/test_black.py +++ b/tests/test_black.py @@ -1956,6 +1956,17 @@ def test_gitignore_used_as_default(self) -> None: ctx.obj["root"] = base assert_collected_sources(src, expected, ctx=ctx, extend_exclude=r"/exclude/") + def test_gitignore_used_on_multiple_sources(self) -> None: + root = Path(DATA_DIR / "gitignore_used_on_multiple_sources") + expected = [ + root / "dir1" / "b.py", + root / "dir2" / "b.py", + ] + ctx = FakeContext() + ctx.obj["root"] = root + src = [root / "dir1", root / "dir2"] + assert_collected_sources(src, expected, ctx=ctx) + @patch("black.find_project_root", lambda *args: (THIS_DIR.resolve(), None)) def test_exclude_for_issue_1572(self) -> None: # Exclude shouldn't touch files that were explicitly given to Black through the