Skip to content

Commit

Permalink
Update paths to modified patches in rebased spec file
Browse files Browse the repository at this point in the history
Signed-off-by: Nikola Forró <nforro@redhat.com>
  • Loading branch information
nforro committed Jun 27, 2023
1 parent c75c0fe commit 242a1bd
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 29 deletions.
54 changes: 27 additions & 27 deletions rebasehelper/specfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,34 +405,34 @@ def write_updated_patches(self, patches_dict: Dict[str, List[str]], disable_inap
removed_patches = []
inapplicable_patches = []
modified_patches = []
for patch in self.spec.patches().content: # pylint: disable=no-member
if 'deleted' in patches_dict:
patch_removed = [x for x in patches_dict['deleted'] if patch.expanded_filename in x]
else:
patch_removed = []
if 'inapplicable' in patches_dict:
patch_inapplicable = [x for x in patches_dict['inapplicable'] if patch.expanded_filename in x]
else:
patch_inapplicable = []
if patch_removed:
self.removed_patches.append(patch.expanded_filename)
removed_patches.append(patch.number)
continue
if patch_inapplicable:
inapplicable_patches.append(patch.number)
if 'modified' in patches_dict:
patch_modified = [x for x in patches_dict['modified'] if patch.expanded_filename in x]
else:
patch_modified = []
if patch_modified:
patch.location = os.path.join(constants.RESULTS_DIR,
constants.REBASED_SOURCES_DIR,
patch.expanded_filename)
modified_patches.append(patch.number)
self.process_patch_macros(comment_out=inapplicable_patches if disable_inapplicable else None,
remove=removed_patches, annotate=inapplicable_patches,
note='The following patch contains conflicts')
with self.spec.patches() as patches:
for patch in patches:
if 'deleted' in patches_dict:
patch_removed = [x for x in patches_dict['deleted'] if patch.expanded_filename in x]
else:
patch_removed = []
if 'inapplicable' in patches_dict:
patch_inapplicable = [x for x in patches_dict['inapplicable'] if patch.expanded_filename in x]
else:
patch_inapplicable = []
if patch_removed:
self.removed_patches.append(patch.expanded_filename)
removed_patches.append(patch.number)
continue
if patch_inapplicable:
inapplicable_patches.append(patch.number)
if 'modified' in patches_dict:
patch_modified = [x for x in patches_dict['modified'] if patch.expanded_filename in x]
else:
patch_modified = []
if patch_modified:
patch.location = os.path.join(constants.RESULTS_DIR,
constants.REBASED_SOURCES_DIR,
patch.expanded_filename)
modified_patches.append(patch.number)
self.process_patch_macros(comment_out=inapplicable_patches if disable_inapplicable else None,
remove=removed_patches, annotate=inapplicable_patches,
note='The following patch contains conflicts')
for number in removed_patches:
patches.remove_numbered(number)
if disable_inapplicable:
Expand Down
45 changes: 43 additions & 2 deletions tests/test_specfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -373,11 +373,52 @@ def test_find_archive_target_in_prep(self, spec_object):
Patch2: 2.patch
"""),
)
),
(
{
'removed_patches': [],
'spec_content': dedent("""\
Patch0: 0.patch
Patch1: 1.patch
%patchlist
2.patch
3.patch
%prep
%patch0 -p0
%patch1 -p1
%patch2 -p2
%patch3 -p3
"""),
},
{
'patches_dict':
{
'modified': ['1.patch', '2.patch'],
},
'disable_inapplicable': False,
},
dedent("""\
Patch0: 0.patch
Patch1: rebase-helper-results/rebased-sources/1.patch
%patchlist
rebase-helper-results/rebased-sources/2.patch
3.patch
%prep
%patch0 -p0
%patch1 -p1
%patch2 -p2
%patch3 -p3
""")
),
], ids=[
'do_not_disable_inapplicable',
'disable_inapplicable',
'comments_and_blank_lines'
'comments_and_blank_lines',
'modified_patches'
])
def test_write_updated_patches(self, mocked_spec_object, kwargs, expected_content):
mocked_spec_object.write_updated_patches(**kwargs)
Expand Down

0 comments on commit 242a1bd

Please sign in to comment.