mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-25 23:05:00 +00:00
aider: Add test case for undo command with dirty files not in last commit.
# Aider chat conversation: USER: add a test case for this ASSISTANT: To add a test case for the updated `/undo` command behavior, we need to modify the `tests/test_commands.py` file. The new test case will ensure that the `/undo` command only aborts if the files modified in the latest commit are dirty. Here is the diff for the new test case: ```diff --- tests/test_commands.py +++ tests/test_commands.py @@ ... @@ + def test_cmd_undo_with_dirty_files_not_in_last_commit(self): + with GitTemporaryDirectory() as repo_dir: + repo = git.Repo(repo_dir) + io = InputOutput(pretty=False, yes=True) + coder = Coder.create(models.GPT35, None, io) + commands = Commands(io, coder) + + # Create and commit a file + filename = "test_file.txt" + file_path = Path(repo_dir) / filename + file_path.write_text("Initial content") + repo.git.add(filename) + repo.git.commit("-m", "Initial commit") + + # Modify the file and commit again + file_path.write_text("Modified content") + repo.git.add(filename) + repo.git.commit("-m", "aider: Modify test_file.txt") + + # Store the commit hash + last_commit_hash = repo.head.commit.hexsha[:7] + coder.last_aider_commit_hash = last_commit_hash + + # Create a dirty file that was not in the last commit + other_file = "other_file.txt" + other_file_path = Path(repo_dir) / other_file + other_file_path.write_text("This is an untracked file") + + # Attempt to undo the last commit + output = commands.cmd_undo("") + self.assertIsNone(output, "Undo should not produce any output") + + # Check that the last commit is still present + self.assertEqual(last_commit_hash, repo.head.commit.hexsha[:7]) + + # Check that the dirty file is still untracked + self.assertTrue(other_file_path.exists()) + self.assertIn(other_file, repo.untracked_files) ``` This test case creates a repository with an initial commit, then modifies a file and commits that change with a message indicating it was done by `aider`. It then creates another file that is not tracked by git (making the repository dirty, but not with the file that was in the last commit). It then runs the `/undo` command and checks that the last commit is still present and that the untracked file is still untracked, confirming that `/undo` did not abort due to the untracked file.
This commit is contained in:
parent
0956a8ec7b
commit
cca43e8489
1 changed files with 38 additions and 0 deletions
|
@ -492,3 +492,41 @@ class TestCommands(TestCase):
|
|||
commands.cmd_drop(str(fname))
|
||||
|
||||
self.assertEqual(len(coder.abs_fnames), 0)
|
||||
def test_cmd_undo_with_dirty_files_not_in_last_commit(self):
|
||||
with GitTemporaryDirectory() as repo_dir:
|
||||
repo = git.Repo(repo_dir)
|
||||
io = InputOutput(pretty=False, yes=True)
|
||||
coder = Coder.create(models.GPT35, None, io)
|
||||
commands = Commands(io, coder)
|
||||
|
||||
# Create and commit a file
|
||||
filename = "test_file.txt"
|
||||
file_path = Path(repo_dir) / filename
|
||||
file_path.write_text("Initial content")
|
||||
repo.git.add(filename)
|
||||
repo.git.commit("-m", "Initial commit")
|
||||
|
||||
# Modify the file and commit again
|
||||
file_path.write_text("Modified content")
|
||||
repo.git.add(filename)
|
||||
repo.git.commit("-m", "aider: Modify test_file.txt")
|
||||
|
||||
# Store the commit hash
|
||||
last_commit_hash = repo.head.commit.hexsha[:7]
|
||||
coder.last_aider_commit_hash = last_commit_hash
|
||||
|
||||
# Create a dirty file that was not in the last commit
|
||||
other_file = "other_file.txt"
|
||||
other_file_path = Path(repo_dir) / other_file
|
||||
other_file_path.write_text("This is an untracked file")
|
||||
|
||||
# Attempt to undo the last commit
|
||||
output = commands.cmd_undo("")
|
||||
self.assertIsNone(output, "Undo should not produce any output")
|
||||
|
||||
# Check that the last commit is still present
|
||||
self.assertEqual(last_commit_hash, repo.head.commit.hexsha[:7])
|
||||
|
||||
# Check that the dirty file is still untracked
|
||||
self.assertTrue(other_file_path.exists())
|
||||
self.assertIn(other_file, repo.untracked_files)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue