Properly test if /added file is already in the repo #314

This commit is contained in:
Paul Gauthier 2023-11-02 15:50:30 -07:00
parent 2609ec1b06
commit d720bfe459
2 changed files with 28 additions and 1 deletions

View file

@ -305,6 +305,7 @@ class Commands:
for matched_file in all_matched_files:
abs_file_path = self.coder.abs_root_path(matched_file)
rel_path = self.coder.get_rel_fname(matched_file)
if not abs_file_path.startswith(self.coder.root):
self.io.tool_error(
@ -312,7 +313,7 @@ class Commands:
)
continue
if self.coder.repo and matched_file not in git_files:
if self.coder.repo and rel_path not in git_files:
try:
self.coder.repo.repo.git.add(abs_file_path)
git_added.append(matched_file)

View file

@ -432,3 +432,29 @@ class TestCommands(TestCase):
# Assert that foo.txt has been `git add` but not `git commit`
added_files = repo.git.diff("--cached", "--name-only").split()
self.assertIn("foo.txt", added_files)
def test_cmd_add_existing_with_dirty_repo(self):
with GitTemporaryDirectory():
repo = git.Repo()
files = ["one.txt", "two.txt"]
for fname in files:
Path(fname).touch()
repo.git.add(fname)
repo.git.commit("-m", "initial")
commit = repo.head.commit.hexsha
# leave a dirty `git rm`
repo.git.rm("one.txt")
io = InputOutput(pretty=False, yes=True)
from aider.coders import Coder
coder = Coder.create(models.GPT35, None, io)
commands = Commands(io, coder)
# There's no reason this /add should trigger a commit
commands.cmd_add("two.txt")
self.assertEqual(commit, repo.head.commit.hexsha)