Skip to content

Commit

Permalink
Properly handle required-source-maintainer when it is group
Browse files Browse the repository at this point in the history
Co-authored-by: Knut Alejandro Anderssen González <kanderssen@suse.com>
  • Loading branch information
imobachgs and teclator committed Jul 14, 2021
1 parent 632cbf9 commit 00ea25e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
9 changes: 7 additions & 2 deletions check_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
except ImportError:
import cElementTree as ET

from lxml import etree as ETL

import osc.conf
import osc.core
from osc.util.helper import decode_list
Expand All @@ -22,7 +24,7 @@
from osclib.core import source_file_load
from osclib.core import target_archs
from osclib.core import create_add_role_request
from osclib.core import maintainers_get
from osc.core import show_project_meta
from urllib.error import HTTPError

import ReviewBot
Expand Down Expand Up @@ -348,7 +350,10 @@ def source_has_correct_maintainers(self, source_project):
)
if not self.required_maintainer: return True

maintainers = maintainers_get(self.apiurl, source_project)
meta = ETL.fromstringlist(show_project_meta(self.apiurl, source_project))
maintainers = meta.xpath('//person[@role="maintainer"]/@userid')
maintainers += ['group:' + g for g in meta.xpath('//group[@role="maintainer"]/@groupid')]

return self.required_maintainer in maintainers

@staticmethod
Expand Down
24 changes: 21 additions & 3 deletions tests/check_source_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def test_devel_project(self):
self.assertReview(req_id, by_user=(self.bot_user, 'accepted'))
self.assertReview(req_id, by_group=(REVIEW_TEAM, 'new'))

def test_source_maintainer(self):
def test_no_source_maintainer(self):
"""Declines the request when the 'required_maintainer' is not maintainer of the source project"""
self._setup_devel_project()

Expand All @@ -103,8 +103,26 @@ def test_source_maintainer(self):
self.assertEqual(add_role_req.actions[0].tgt_project, SRC_PROJECT)
self.assertEqual('Created automatically from request %s' % req_id, add_role_req.description)

def _setup_devel_project(self):
devel_project = self.wf.create_project(SRC_PROJECT)
def test_source_maintainer(self):
"""Accepts the request when the 'required_maintainer' is a group and is a maintainer for the project"""
group_name = FACTORY_MAINTAINERS.replace('group:', '')
self.wf.create_group(group_name)
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS })

self._setup_devel_project(maintainer={'groups': [group_name]})

req_id = self.wf.create_submit_request(SRC_PROJECT, 'blowfish').reqid

self.assertReview(req_id, by_user=(self.bot_user, 'new'))

self.review_bot.set_request_ids([req_id])
self.review_bot.check_requests()

self.assertReview(req_id, by_user=(self.bot_user, 'accepted'))
self.assertReview(req_id, by_group=(REVIEW_TEAM, 'new'))

def _setup_devel_project(self, maintainer={}):
devel_project = self.wf.create_project(SRC_PROJECT, maintainer=maintainer)
devel_package = OBSLocal.Package('blowfish', project=devel_project)

blowfish_spec = os.path.join(FIXTURES, 'packages', 'blowfish', 'blowfish.spec')
Expand Down

0 comments on commit 00ea25e

Please sign in to comment.