# Generated by CodiumAI from pr_agent.algo.git_patch_processing import omit_deletion_hunks """ Code Analysis Objective: The objective of the "omit_deletion_hunks" function is to remove deletion hunks from a patch file and return only the added lines. Inputs: - "patch_lines": a list of strings representing the lines of a patch file. Flow: - Initialize empty lists "temp_hunk" and "added_patched", and boolean variables "add_hunk" and "inside_hunk". - Compile a regular expression pattern to match hunk headers. - Iterate through each line in "patch_lines". - If the line starts with "@@", match the line with the hunk header pattern, finish the previous hunk if necessary, and append the line to "temp_hunk". - If the line does not start with "@@", append the line to "temp_hunk", check if it is an added line, and set "add_hunk" to True if it is. - If the function reaches the end of "patch_lines" and there is an unfinished hunk with added lines, append it to "added_patched". - Join the lines in "added_patched" with newline characters and return the resulting string. Outputs: - A string representing the added lines in the patch file. Additional aspects: - The function only considers hunks with added lines and ignores hunks with deleted lines. - The function assumes that the input patch file is well-formed and follows the unified diff format. """ class TestOmitDeletionHunks: # Tests that the function correctly handles a simple patch containing only additions def test_simple_patch_additions(self): patch_lines = ['@@ -1,0 +1,1 @@\n', '+added line\n'] expected_output = '@@ -1,0 +1,1 @@\n\n+added line\n' assert omit_deletion_hunks(patch_lines) == expected_output # Tests that the function correctly omits deletion hunks and concatenates multiple hunks in a patch. def test_patch_multiple_hunks(self): patch_lines = ['@@ -1,0 +1,1 @@\n', '-deleted line', '+added line\n', '@@ -2,0 +3,1 @@\n', '-deleted line\n', '-another deleted line\n'] expected_output = '@@ -1,0 +1,1 @@\n\n-deleted line\n+added line\n' assert omit_deletion_hunks(patch_lines) == expected_output # Tests that the function correctly omits deletion lines from the patch when there are no additions or context # lines. def test_patch_only_deletions(self): patch_lines = ['@@ -1,1 +1,0 @@\n', '-deleted line\n'] expected_output = '' assert omit_deletion_hunks(patch_lines) == expected_output # Additional deletion lines patch_lines = ['@@ -1,1 +1,0 @@\n', '-deleted line\n', '-another deleted line\n'] expected_output = '' assert omit_deletion_hunks(patch_lines) == expected_output # Additional context lines patch_lines = ['@@ -1,1 +1,0 @@\n', '-deleted line\n', '-another deleted line\n', 'context line 1\n', 'context line 2\n', 'context line 3\n'] expected_output = '' assert omit_deletion_hunks(patch_lines) == expected_output # Tests that the function correctly handles an empty patch def test_empty_patch(self): patch_lines = [] expected_output = '' assert omit_deletion_hunks(patch_lines) == expected_output # Tests that the function correctly handles a patch containing only one hunk def test_patch_one_hunk(self): patch_lines = ['@@ -1,0 +1,1 @@\n', '+added line\n'] expected_output = '@@ -1,0 +1,1 @@\n\n+added line\n' assert omit_deletion_hunks(patch_lines) == expected_output # Tests that the function correctly handles a patch containing only deletions and no additions def test_patch_deletions_no_additions(self): patch_lines = ['@@ -1,1 +1,0 @@\n', '-deleted line\n'] expected_output = '' assert omit_deletion_hunks(patch_lines) == expected_output