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)
|
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"
|
ORIGINAL = "<<<<<<< ORIGINAL"
|
||||||
DIVIDER = "======="
|
DIVIDER = "======="
|
||||||
UPDATED = ">>>>>>> UPDATED"
|
UPDATED = ">>>>>>> UPDATED"
|
||||||
|
@ -155,6 +139,10 @@ split_re = re.compile(r"^((?:" + separators + r")[ ]*\n)", re.MULTILINE | re.DOT
|
||||||
|
|
||||||
|
|
||||||
def find_original_update_blocks(content):
|
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 = re.split(split_re, content)
|
||||||
|
|
||||||
pieces.reverse()
|
pieces.reverse()
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# flake8: noqa: E501
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
from aider import utils
|
from aider import utils
|
||||||
|
|
||||||
|
@ -116,6 +118,41 @@ oops!
|
||||||
list(utils.find_original_update_blocks(edit))
|
list(utils.find_original_update_blocks(edit))
|
||||||
self.assertIn("filename", str(cm.exception))
|
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__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue