Skip to content

Commit

Permalink
fix: handle newline issues in patch generation
Browse files Browse the repository at this point in the history
  • Loading branch information
mrT23 committed Jan 4, 2025
1 parent bde594c commit e431979
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
2 changes: 2 additions & 0 deletions pr_agent/algo/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,8 @@ def load_large_diff(filename, new_file_content_str: str, original_file_content_s
return ""

try:
original_file_content_str = original_file_content_str.rstrip() + "\n"
new_file_content_str = new_file_content_str.rstrip() + "\n"
diff = difflib.unified_diff(original_file_content_str.splitlines(keepends=True),
new_file_content_str.splitlines(keepends=True))
if get_settings().config.verbosity_level >= 2 and show_warning:
Expand Down
26 changes: 26 additions & 0 deletions tests/unittest/test_extend_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from pr_agent.algo.git_patch_processing import extend_patch
from pr_agent.algo.pr_processing import pr_generate_extended_diff
from pr_agent.algo.token_handler import TokenHandler
from pr_agent.algo.utils import load_large_diff
from pr_agent.config_loader import get_settings


Expand Down Expand Up @@ -157,3 +158,28 @@ def test_extend_patches_with_extra_lines(self, token_handler, pr_languages):

p0_extended = patches_extended_with_extra_lines[0].strip()
assert p0_extended == "## File: 'file1'\n\n@@ -3,8 +3,8 @@ \n line0\n line1\n-original content\n+modified content\n line2\n line3\n line4\n line5\n line6"


class TestLoadLargeDiff:
def test_no_newline(self):
patch = load_large_diff("test.py",
"""\
old content 1
some new content
another line
""",
"""
old content 1
old content 2""")

patch_expected="""\
---
+++
@@ -1,3 +1,3 @@
-
old content 1
- old content 2
+ some new content
+ another line
"""
assert patch == patch_expected

0 comments on commit e431979

Please sign in to comment.