diff --git a/pr_agent/algo/git_patch_processing.py b/pr_agent/algo/git_patch_processing.py index a2c06db5..cfe5e936 100644 --- a/pr_agent/algo/git_patch_processing.py +++ b/pr_agent/algo/git_patch_processing.py @@ -70,6 +70,7 @@ def extend_patch(original_file_str, patch_str, patch_extra_lines_before=0, patch extended_start2 = start2 extended_size2 = size2 delta_lines = [] + extended_patch_lines.append('') extended_patch_lines.append( f'@@ -{extended_start1},{extended_size1} ' f'+{extended_start2},{extended_size2} @@ {section_header}') diff --git a/pr_agent/algo/pr_processing.py b/pr_agent/algo/pr_processing.py index a51820d9..a467a2d1 100644 --- a/pr_agent/algo/pr_processing.py +++ b/pr_agent/algo/pr_processing.py @@ -195,7 +195,7 @@ def pr_generate_extended_diff(pr_languages: list, if not extended_patch: get_logger().warning(f"Failed to extend patch for file: {file.filename}") continue - full_extended_patch = f"\n\n## {file.filename}\n\n{extended_patch}\n" + full_extended_patch = f"\n\n## {file.filename}\n{extended_patch.rstrip()}\n" if add_line_numbers_to_hunks: full_extended_patch = convert_to_hunks_with_lines_numbers(extended_patch, file) diff --git a/tests/unittest/test_extend_patch.py b/tests/unittest/test_extend_patch.py index 9d309822..493f28e7 100644 --- a/tests/unittest/test_extend_patch.py +++ b/tests/unittest/test_extend_patch.py @@ -10,7 +10,7 @@ class TestExtendPatch: original_file_str = 'line1\nline2\nline3\nline4\nline5' patch_str = '@@ -2,2 +2,2 @@ init()\n-line2\n+new_line2\n line3' num_lines = 1 - expected_output = '@@ -1,4 +1,4 @@ init()\n line1\n-line2\n+new_line2\n line3\n line4' + expected_output = '\n@@ -1,4 +1,4 @@ init()\n line1\n-line2\n+new_line2\n line3\n line4' actual_output = extend_patch(original_file_str, patch_str, patch_extra_lines_before=num_lines, patch_extra_lines_after=num_lines) assert actual_output == expected_output @@ -46,7 +46,7 @@ class TestExtendPatch: patch_str = '@@ -2,3 +2,3 @@ init()\n-line2\n+new_line2\n line3\n line4' for num_lines in [1, 2, 3]: # check that even if we are over the number of lines in the file, the function still works - expected_output = '@@ -1,5 +1,5 @@ init()\n line1\n-line2\n+new_line2\n line3\n line4\n line5' + expected_output = '\n@@ -1,5 +1,5 @@ init()\n line1\n-line2\n+new_line2\n line3\n line4\n line5' actual_output = extend_patch(original_file_str, patch_str, patch_extra_lines_before=num_lines, patch_extra_lines_after=num_lines) assert actual_output == expected_output @@ -56,7 +56,7 @@ class TestExtendPatch: original_file_str = 'line1\nline2\nline3\nline4\nline5\nline6' patch_str = '@@ -2,3 +2,3 @@ init()\n-line2\n+new_line2\n line3\n line4\n@@ -4,1 +4,1 @@ init2()\n-line4\n+new_line4' # noqa: E501 num_lines = 1 - expected_output = '@@ -1,5 +1,5 @@ init()\n line1\n-line2\n+new_line2\n line3\n line4\n line5\n@@ -3,3 +3,3 @@ init2()\n line3\n-line4\n+new_line4\n line5' # noqa: E501 + expected_output = '\n@@ -1,5 +1,5 @@ init()\n line1\n-line2\n+new_line2\n line3\n line4\n line5\n\n@@ -3,3 +3,3 @@ init2()\n line3\n-line4\n+new_line4\n line5' # noqa: E501 actual_output = extend_patch(original_file_str, patch_str, patch_extra_lines_before=num_lines, patch_extra_lines_after=num_lines) assert actual_output == expected_output @@ -102,8 +102,8 @@ class TestExtendedPatchMoreLines: # Check that with no extra lines, the patches are the same as the original patches p0 = patches_extended_no_extra_lines[0].strip() p1 = patches_extended_no_extra_lines[1].strip() - assert p0 == '## file1\n\n' + pr_languages[0]['files'][0].patch.strip() - assert p1 == '## file2\n\n' + pr_languages[0]['files'][1].patch.strip() + assert p0 == '## file1\n' + pr_languages[0]['files'][0].patch.strip() + assert p1 == '## file2\n' + pr_languages[0]['files'][1].patch.strip() patches_extended_with_extra_lines, total_tokens, patches_extended_tokens = pr_generate_extended_diff( pr_languages, token_handler, add_line_numbers_to_hunks=False,