mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-29 08:44:59 +00:00
fix bug if ORIG/UPD block is missing trailing newline; added test
This commit is contained in:
parent
1d7fffe8ab
commit
92e091f5a6
2 changed files with 41 additions and 16 deletions
|
@ -129,22 +129,6 @@ def show_messages(messages, title):
|
|||
print(role, line)
|
||||
|
||||
|
||||
pattern = re.compile(
|
||||
# Optional: Matches the start of a code block (e.g., ```python) and any following whitespace
|
||||
r"(^```\S*\s*)?"
|
||||
# Matches the file path
|
||||
r"^(\S+)\s*"
|
||||
# Optional: Matches the end of a code block (e.g., ```) and any following whitespace
|
||||
r"(^```\S*\s*)?"
|
||||
# Matches the start of the ORIGINAL section and captures its content
|
||||
r"^<<<<<<< ORIGINAL\n(.*?\n?)"
|
||||
# Matches sep between ORIGINAL and UPDATED sections, captures UPDATED content
|
||||
r"^=======\n(.*?)"
|
||||
# Matches the end of the UPDATED section
|
||||
r"^>>>>>>> UPDATED",
|
||||
re.MULTILINE | re.DOTALL,
|
||||
)
|
||||
|
||||
ORIGINAL = "<<<<<<< ORIGINAL"
|
||||
DIVIDER = "======="
|
||||
UPDATED = ">>>>>>> UPDATED"
|
||||
|
@ -155,6 +139,10 @@ split_re = re.compile(r"^((?:" + separators + r")[ ]*\n)", re.MULTILINE | re.DOT
|
|||
|
||||
|
||||
def find_original_update_blocks(content):
|
||||
# make sure we end with a newline, otherwise the regex will miss <<UPD on the last line
|
||||
if not content.endswith("\n"):
|
||||
content = content + "\n"
|
||||
|
||||
pieces = re.split(split_re, content)
|
||||
|
||||
pieces.reverse()
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# flake8: noqa: E501
|
||||
|
||||
import unittest
|
||||
from aider import utils
|
||||
|
||||
|
@ -116,6 +118,41 @@ oops!
|
|||
list(utils.find_original_update_blocks(edit))
|
||||
self.assertIn("filename", str(cm.exception))
|
||||
|
||||
def test_find_original_update_blocks_no_final_newline(self):
|
||||
edit = """
|
||||
aider/coder.py
|
||||
<<<<<<< ORIGINAL
|
||||
self.console.print("[red]^C again to quit")
|
||||
=======
|
||||
self.io.tool_error("^C again to quit")
|
||||
>>>>>>> UPDATED
|
||||
|
||||
aider/coder.py
|
||||
<<<<<<< ORIGINAL
|
||||
self.io.tool_error("Malformed ORIGINAL/UPDATE blocks, retrying...")
|
||||
self.io.tool_error(err)
|
||||
=======
|
||||
self.io.tool_error("Malformed ORIGINAL/UPDATE blocks, retrying...")
|
||||
self.io.tool_error(str(err))
|
||||
>>>>>>> UPDATED
|
||||
|
||||
aider/coder.py
|
||||
<<<<<<< ORIGINAL
|
||||
self.console.print("[red]Unable to get commit message from gpt-3.5-turbo. Use /commit to try again.\n")
|
||||
=======
|
||||
self.io.tool_error("Unable to get commit message from gpt-3.5-turbo. Use /commit to try again.")
|
||||
>>>>>>> UPDATED
|
||||
|
||||
aider/coder.py
|
||||
<<<<<<< ORIGINAL
|
||||
self.console.print("[red]Skipped commmit.")
|
||||
=======
|
||||
self.io.tool_error("Skipped commmit.")
|
||||
>>>>>>> UPDATED"""
|
||||
|
||||
# Should not raise a ValueError
|
||||
list(utils.find_original_update_blocks(edit))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue