From 92c5c99bf3c3ee3c11873f4499516ba40bc5b17a Mon Sep 17 00:00:00 2001 From: ujisati <98663233+ujisati@users.noreply.github.com> Date: Tue, 13 May 2025 03:20:08 +0000 Subject: [PATCH] fix: base coder not ignoring gitignore if --file is used. --- aider/coders/base_coder.py | 1 + tests/basic/test_main.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index f37e47bed..5dbe03cf9 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -445,6 +445,7 @@ class Coder: fname = Path(fname) if self.repo and self.repo.git_ignored_file(fname): self.io.tool_warning(f"Skipping {fname} that matches gitignore spec.") + continue if self.repo and self.repo.ignored_file(fname): self.io.tool_warning(f"Skipping {fname} that matches aiderignore spec.") diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index 1fe387ccf..f4368d8cd 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -1348,3 +1348,18 @@ class TestMain(TestCase): ) for call in mock_io_instance.tool_warning.call_args_list: self.assertNotIn("Cost estimates may be inaccurate", call[0][0]) + + def test_argv_file_respects_git(self): + with GitTemporaryDirectory(): + fname = Path("not_in_git.txt") + fname.touch() + with open(".gitignore", "w+") as f: + f.write("not_in_git.txt") + coder = main( + argv=["--file", "not_in_git.txt"], + input=DummyInput(), + output=DummyOutput(), + return_coder=True, + ) + self.assertNotIn("not_in_git.txt", str(coder.abs_fnames)) + self.assertFalse(coder.allowed_to_edit("not_in_git.txt"))