Add a test case for check_bugowner
This commit is contained in:
parent
a80184d44e
commit
db41ef3536
@ -41,11 +41,11 @@ class CheckerBugowner(ReviewBot.ReviewBot):
|
||||
if matched_package and matched_package != target_package:
|
||||
continue
|
||||
if not self.valid_maintainer(matched_maintainer):
|
||||
self.review_messages['declined'] += f"\n{matched_maintainer} could not be found on this instance."
|
||||
self.review_messages['declined'] = f"\n{matched_maintainer} could not be found on this instance."
|
||||
return False
|
||||
return True
|
||||
self.review_messages['declined'] += f"\n{target_package } appears to be a new package and " + \
|
||||
"no 'bugowner' line could be found in the request description."
|
||||
"no matching 'bugowner:' line could be found in the request description."
|
||||
return False
|
||||
|
||||
def existing_url(self, url):
|
||||
|
@ -525,7 +525,7 @@ class StagingWorkflow(ABC):
|
||||
project_links=project_links)
|
||||
return self.projects[name]
|
||||
|
||||
def submit_package(self, package, project=None):
|
||||
def submit_package(self, package, project=None, request_description=""):
|
||||
"""Creates submit request from package to target project.
|
||||
|
||||
Both have to exist (Use :func:`create_submit_request` otherwise).
|
||||
@ -534,12 +534,14 @@ class StagingWorkflow(ABC):
|
||||
:type package: Package
|
||||
:param project: project where to send submit request, None means use the default.
|
||||
:type project: Project or str or None
|
||||
:param request_description what the request description should be
|
||||
:type request_description str or None
|
||||
:return: created request.
|
||||
:rtype: Request
|
||||
"""
|
||||
if not project:
|
||||
project = self.project
|
||||
request = Request(source_package=package, target_project=project)
|
||||
request = Request(source_package=package, target_project=project, description=request_description)
|
||||
self.requests.append(request)
|
||||
return request
|
||||
|
||||
@ -550,7 +552,7 @@ class StagingWorkflow(ABC):
|
||||
self.requests.append(request)
|
||||
return request
|
||||
|
||||
def create_submit_request(self, project, package, text=None, add_commit=True):
|
||||
def create_submit_request(self, project, package, text=None, add_commit=True, description=""):
|
||||
"""Creates submit request from package in specified project to default project.
|
||||
|
||||
It creates project if not exist and also package.
|
||||
@ -573,7 +575,7 @@ class StagingWorkflow(ABC):
|
||||
package = Package(name=package, project=project)
|
||||
if add_commit:
|
||||
package.create_commit(text=text)
|
||||
return self.submit_package(package)
|
||||
return self.submit_package(package, request_description=description)
|
||||
|
||||
def __del__(self):
|
||||
if not self.api:
|
||||
@ -1049,7 +1051,7 @@ class Request(object):
|
||||
.. _osc.core: https://github.com/openSUSE/osc/blob/master/osc/core.py
|
||||
"""
|
||||
|
||||
def __init__(self, source_package=None, target_project=None, target_package=None, type='submit'):
|
||||
def __init__(self, source_package=None, target_project=None, target_package=None, type='submit', description=""):
|
||||
"""Creates a request in the OBS instance and instantiates an object to represent it"""
|
||||
self.revoked = True
|
||||
|
||||
@ -1058,7 +1060,8 @@ class Request(object):
|
||||
src_project=source_package.project.name,
|
||||
src_package=source_package.name,
|
||||
dst_project=target_project,
|
||||
dst_package=target_package)
|
||||
dst_package=target_package,
|
||||
message=description)
|
||||
print('created submit request {}/{} -> {}'.format(
|
||||
source_package.project.name, source_package.name, target_project))
|
||||
elif type == 'delete':
|
||||
|
82
tests/check_bugowner_tests.py
Normal file
82
tests/check_bugowner_tests.py
Normal file
@ -0,0 +1,82 @@
|
||||
import logging
|
||||
from . import OBSLocal
|
||||
from check_bugowner import CheckerBugowner
|
||||
import pytest
|
||||
|
||||
PROJECT = "SLE:Next-SP"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def default_config(request):
|
||||
wf = OBSLocal.FactoryWorkflow(PROJECT)
|
||||
project = wf.projects[PROJECT]
|
||||
|
||||
request.cls.bot_user = 'factory-auto'
|
||||
|
||||
wf.create_user(request.cls.bot_user)
|
||||
# When creating a review, set the by_user to bot_user
|
||||
project.add_reviewers(users=[request.cls.bot_user])
|
||||
|
||||
request.cls.wf = wf
|
||||
|
||||
request.cls.review_bot = CheckerBugowner(request.cls.wf.apiurl, user=request.cls.bot_user, logger=logging.getLogger())
|
||||
|
||||
yield "workflow"
|
||||
del request.cls.wf
|
||||
|
||||
|
||||
class TestCheckBugowner(OBSLocal.TestCase):
|
||||
|
||||
@pytest.mark.usefixtures("default_config")
|
||||
def test_no_bugowner(self):
|
||||
"""Declines the request for a new package"""
|
||||
req_id = self.wf.create_submit_request('devel:wine', 'merlot').reqid
|
||||
|
||||
self.assertReview(req_id, by_user=(self.bot_user, 'new'))
|
||||
|
||||
self.review_bot.set_request_ids([req_id])
|
||||
self.review_bot.check_requests()
|
||||
|
||||
review = self.assertReview(req_id, by_user=(self.bot_user, 'declined'))
|
||||
self.assertIn('merlot appears to be a new package', review.comment)
|
||||
|
||||
@pytest.mark.usefixtures("default_config")
|
||||
def test_existing_package(self):
|
||||
"""Accepts requests for existing packages"""
|
||||
self.wf.create_package(PROJECT, 'merlot')
|
||||
|
||||
req_id = self.wf.create_submit_request('devel:wine', 'merlot').reqid
|
||||
|
||||
self.assertReview(req_id, by_user=(self.bot_user, 'new'))
|
||||
|
||||
self.review_bot.set_request_ids([req_id])
|
||||
self.review_bot.check_requests()
|
||||
|
||||
review = self.assertReview(req_id, by_user=(self.bot_user, 'accepted'))
|
||||
self.assertEqual('ok', review.comment)
|
||||
|
||||
@pytest.mark.usefixtures("default_config")
|
||||
def test_invalid_bugowner(self):
|
||||
"""Declines the request for a new package because of wrong maintainer"""
|
||||
req_id = self.wf.create_submit_request('devel:wine', 'merlot', description="bugowner: thatguythere").reqid
|
||||
|
||||
self.assertReview(req_id, by_user=(self.bot_user, 'new'))
|
||||
|
||||
self.review_bot.set_request_ids([req_id])
|
||||
self.review_bot.check_requests()
|
||||
|
||||
review = self.assertReview(req_id, by_user=(self.bot_user, 'declined'))
|
||||
self.assertIn('thatguythere could not be found on this instance.', review.comment)
|
||||
|
||||
@pytest.mark.usefixtures("default_config")
|
||||
def test_valid_bugowner(self):
|
||||
"""Accept request with valid maintainer"""
|
||||
self.wf.create_user('thegirl')
|
||||
req_id = self.wf.create_submit_request('devel:wine', 'merlot', description="bugowner: thegirl").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'))
|
Loading…
x
Reference in New Issue
Block a user