Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2022-03-10 22:45:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.2349 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Thu Mar 10 22:45:44 2022 rev:395 rq:960802 version:20220310.99e9d9a2 Wed Mar 9 18:47:52 2022 rev:394 rq:960375 version:20220308.807b0f93 Tue Mar 8 20:31:44 2022 rev:393 rq:960042 version:20220307.0e859719 Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2022-03-07 18:26:21.450766593 +0100 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.2349/openSUSE-release-tools.changes 2022-03-11 11:48:26.818800019 +0100 @@ -1,0 +2,22 @@ +Thu Mar 10 14:05:24 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220310.99e9d9a2: + * package: Package /usr/bin/osrt-check_bugowner + * check_bugowner: Relax check for patchinfo - patchinfo.* is good as well + * gocd: Run check_bugowner on SLE side + * Add a test case for check_bugowner + * Add ReviewBot to check for bugowner lines in requests for new packages + +------------------------------------------------------------------- +Tue Mar 08 13:06:56 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220308.807b0f93: + * tests: Make use of fixtures to be able to test different workflows + +------------------------------------------------------------------- +Mon Mar 07 18:54:24 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220307.0e859719: + * CI: Split the tests in multiple runs + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20220307.7fa0e0de.obscpio New: ---- openSUSE-release-tools-20220310.99e9d9a2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.9tzHpP/_old 2022-03-11 11:48:27.730799113 +0100 +++ /var/tmp/diff_new_pack.9tzHpP/_new 2022-03-11 11:48:27.734799110 +0100 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20220307.7fa0e0de +Version: 20220310.99e9d9a2 Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT @@ -345,6 +345,7 @@ %{_bindir}/osrt-bugowner %{_bindir}/osrt-build-fail-reminder %{_bindir}/osrt-checknewer +%{_bindir}/osrt-check_bugowner %{_bindir}/osrt-check_source_in_factory %{_bindir}/osrt-check_tags_in_requests %{_bindir}/osrt-compare_pkglist ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.9tzHpP/_old 2022-03-11 11:48:27.790799054 +0100 +++ /var/tmp/diff_new_pack.9tzHpP/_new 2022-03-11 11:48:27.798799045 +0100 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">7fa0e0de0d1ab1fb00fed7aad91ecc4d77f38123</param> + <param name="changesrevision">d344cf66a899f0c46ca6cf1ad9bfbfda9ebe1918</param> </service> </servicedata> ++++++ openSUSE-release-tools-20220307.7fa0e0de.obscpio -> openSUSE-release-tools-20220310.99e9d9a2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/.github/workflows/ci-test.yml new/openSUSE-release-tools-20220310.99e9d9a2/.github/workflows/ci-test.yml --- old/openSUSE-release-tools-20220307.7fa0e0de/.github/workflows/ci-test.yml 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/.github/workflows/ci-test.yml 2022-03-10 15:03:42.000000000 +0100 @@ -12,6 +12,10 @@ tests: timeout-minutes: 40 runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ci_node_index: [Long1,Long2,Rest] steps: - name: Checkout @@ -22,6 +26,12 @@ - name: Run tests run: docker-compose -f dist/ci/docker-compose.yml run test + env: + # Specifies how many jobs you would like to run in parallel, + # used for partitioning + CI_NODE_TOTAL: ${{ matrix.ci_node_total }} + # Use the index from matrix as an environment variable + CI_NODE_INDEX: ${{ matrix.ci_node_index }} - name: Submit coverage report to Codecov uses: codecov/codecov-action@v1.5.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/CONTENTS.md new/openSUSE-release-tools-20220310.99e9d9a2/CONTENTS.md --- old/openSUSE-release-tools-20220307.7fa0e0de/CONTENTS.md 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/CONTENTS.md 2022-03-10 15:03:42.000000000 +0100 @@ -322,11 +322,20 @@ #### issue-diff.py Compares packages from a project against factory for differences in referenced issues and presents -changes to allow whitelisting before creating Bugzilla entries. +changes to allow whitelisting before creating Bugzilla entries. It's used to check Factory packages +have all the bug references fixed in SLE (i.e. if 'Factory First' policy was correctly applied). * Sources: [issue-diff.py](issue-diff.py) * Documentation: -- * Package: openSUSE-release-tools -* Usage: ??? +* Usage: manually +### check_bugowner.py +Verifies requests for new packages have a bugowner line in the request description (used in SLE where we don't have +devel projects). + + * Sources: [check_bugowner.py](check_bugowner.py) + * Documentation: -- + * Package: openSUSE-release-tools + * Usage: gocd \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/ReviewBot.py new/openSUSE-release-tools-20220310.99e9d9a2/ReviewBot.py --- old/openSUSE-release-tools-20220307.7fa0e0de/ReviewBot.py 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/ReviewBot.py 2022-03-10 15:03:42.000000000 +0100 @@ -289,8 +289,10 @@ self.add_review(req, by_group=by_group, by_user=by_user, msg='Adding fallback reviewer') if doit: - self.logger.debug("setting %s to %s" % (req.reqid, state)) - if not self.dryrun: + if self.dryrun: + self.logger.info("(dryrun) would set %s to %s with message %s" % (req.reqid, state, msg)) + else: + self.logger.debug("setting %s to %s" % (req.reqid, state)) try: osc.core.change_review_state(apiurl=self.apiurl, reqid=req.reqid, newstate=newstate, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/check_bugowner.py new/openSUSE-release-tools-20220310.99e9d9a2/check_bugowner.py --- old/openSUSE-release-tools-20220307.7fa0e0de/check_bugowner.py 1970-01-01 01:00:00.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/check_bugowner.py 2022-03-10 15:03:42.000000000 +0100 @@ -0,0 +1,82 @@ +#!/usr/bin/python3 + +# SPDX-License-Identifier: MIT + +import sys +import re + +from urllib.error import HTTPError + +import osc.conf +import osc.core +import ReviewBot + +http_GET = osc.core.http_GET + + +class CheckerBugowner(ReviewBot.ReviewBot): + + def __init__(self, *args, **kwargs): + ReviewBot.ReviewBot.__init__(self, *args, **kwargs) + + def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package): + self.logger.info("%s/%s@%s -> %s/%s" % (src_project, + src_package, src_rev, target_project, target_package)) + if src_package.startswith('patchinfo'): + return True + if self.exists_in(target_project, target_package): + return True + for line in self.request.description.splitlines(): + matched_package = None + matched_maintainer = None + m = re.match(r'bugowner:\s*(\S*)\s*$', line) + if m: + matched_maintainer = m.group(1) + m = re.match(r'bugowner:\s(\S*)\s(\S*)\s*$', line) + if m: + matched_maintainer = m.group(2) + matched_package = m.group(1) + if not matched_maintainer: + continue + 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." + return False + return True + self.review_messages['declined'] += f"\n{target_package } appears to be a new package and " + \ + "no matching 'bugowner:' line could be found in the request description." + return False + + def existing_url(self, url): + "Return False if url returns 404" + try: + osc.core.http_GET(url) + except HTTPError as e: + if e.code == 404: + return False + return True + + def valid_maintainer(self, maintainer): + if maintainer.startswith('group:'): + maintainer = maintainer.replace('group:', '') + url = osc.core.makeurl(self.apiurl, ['group', maintainer]) + return self.existing_url(url) + url = osc.core.makeurl(self.apiurl, ['person', maintainer]) + return self.existing_url(url) + + def exists_in(self, project, package): + url = osc.core.makeurl(self.apiurl, ['source', project, package]) + return self.existing_url(url) + + +class CommandLineInterface(ReviewBot.CommandLineInterface): + + def __init__(self, *args, **kwargs): + ReviewBot.CommandLineInterface.__init__(self, args, kwargs) + self.clazz = CheckerBugowner + + +if __name__ == "__main__": + app = CommandLineInterface() + sys.exit(app.main()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/dist/ci/docker-compose-test.sh new/openSUSE-release-tools-20220310.99e9d9a2/dist/ci/docker-compose-test.sh --- old/openSUSE-release-tools-20220307.7fa0e0de/dist/ci/docker-compose-test.sh 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/dist/ci/docker-compose-test.sh 2022-03-10 15:03:42.000000000 +0100 @@ -13,7 +13,22 @@ done cd /code + +ci_node=$1 + for file in tests/*_tests.py; do + if test -n "$ci_node"; then + if test "$ci_node" == "Rest"; then + if grep -q '# CI-Node' $file; then + echo "Skipping $file in 'Rest'" + continue + fi + else + if ! grep -q "# CI-Node: $ci_node" $file; then + continue + fi + fi + fi if ! test -f /code/.without-coverage; then COVER_ARGS="--cov=. --cov-append --cov-report=xml" else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/dist/ci/docker-compose.yml new/openSUSE-release-tools-20220310.99e9d9a2/dist/ci/docker-compose.yml --- old/openSUSE-release-tools-20220307.7fa0e0de/dist/ci/docker-compose.yml 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/dist/ci/docker-compose.yml 2022-03-10 15:03:42.000000000 +0100 @@ -48,7 +48,7 @@ depends_on: - api - smtp - command: /code/dist/ci/docker-compose-test.sh + command: /code/dist/ci/docker-compose-test.sh ${CI_NODE_INDEX} cap_add: - SYS_PTRACE flaker: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/dist/package/openSUSE-release-tools.spec new/openSUSE-release-tools-20220310.99e9d9a2/dist/package/openSUSE-release-tools.spec --- old/openSUSE-release-tools-20220307.7fa0e0de/dist/package/openSUSE-release-tools.spec 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/dist/package/openSUSE-release-tools.spec 2022-03-10 15:03:42.000000000 +0100 @@ -345,6 +345,7 @@ %{_bindir}/osrt-bugowner %{_bindir}/osrt-build-fail-reminder %{_bindir}/osrt-checknewer +%{_bindir}/osrt-check_bugowner %{_bindir}/osrt-check_source_in_factory %{_bindir}/osrt-check_tags_in_requests %{_bindir}/osrt-compare_pkglist diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/gocd/checkers.suse.gocd.yaml new/openSUSE-release-tools-20220310.99e9d9a2/gocd/checkers.suse.gocd.yaml --- old/openSUSE-release-tools-20220307.7fa0e0de/gocd/checkers.suse.gocd.yaml 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/gocd/checkers.suse.gocd.yaml 2022-03-10 15:03:42.000000000 +0100 @@ -20,6 +20,26 @@ - staging-bot tasks: - script: ./check_tags_in_requests.py -A https://api.suse.de --verbose --user=sle-changelog-checker --review=accept-onpass --factory=openSUSE.org:openSUSE:Factory review + Run.Bugowner.Checker: + group: SLE.Checkers + lock_behavior: unlockWhenFinished + timer: + spec: 0 */5 * ? * * + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-bugowner-checker + materials: + git: + git: https://github.com/openSUSE/openSUSE-release-tools.git + stages: + - Run: + approval: + type: manual + jobs: + Run: + resources: + - staging-bot + tasks: + - script: ./check_bugowner.py -A https://api.suse.de --verbose --user=bugowner-checker --review=accept-onpass review SLE15SP4.Project: group: SLE.Checkers lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/gocd/checkers.suse.gocd.yaml.erb new/openSUSE-release-tools-20220310.99e9d9a2/gocd/checkers.suse.gocd.yaml.erb --- old/openSUSE-release-tools-20220307.7fa0e0de/gocd/checkers.suse.gocd.yaml.erb 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/gocd/checkers.suse.gocd.yaml.erb 2022-03-10 15:03:42.000000000 +0100 @@ -20,6 +20,26 @@ - staging-bot tasks: - script: ./check_tags_in_requests.py -A https://api.suse.de --verbose --user=sle-changelog-checker --review=accept-onpass --factory=openSUSE.org:openSUSE:Factory review + Run.Bugowner.Checker: + group: SLE.Checkers + lock_behavior: unlockWhenFinished + timer: + spec: 0 */5 * ? * * + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-bugowner-checker + materials: + git: + git: https://github.com/openSUSE/openSUSE-release-tools.git + stages: + - Run: + approval: + type: manual + jobs: + Run: + resources: + - staging-bot + tasks: + - script: ./check_bugowner.py -A https://api.suse.de --verbose --user=bugowner-checker --review=accept-onpass review SLE15SP4.Project: group: SLE.Checkers lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/tests/OBSLocal.py new/openSUSE-release-tools-20220310.99e9d9a2/tests/OBSLocal.py --- old/openSUSE-release-tools-20220307.7fa0e0de/tests/OBSLocal.py 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/tests/OBSLocal.py 2022-03-10 15:03:42.000000000 +0100 @@ -525,7 +525,7 @@ 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 @@ :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 @@ 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 @@ 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 @@ .. _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 @@ 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': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/tests/accept_tests.py new/openSUSE-release-tools-20220310.99e9d9a2/tests/accept_tests.py --- old/openSUSE-release-tools-20220307.7fa0e0de/tests/accept_tests.py 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/tests/accept_tests.py 2022-03-10 15:03:42.000000000 +0100 @@ -8,6 +8,8 @@ from mock import MagicMock from . import OBSLocal +# CI-Node: Long2 + class TestAccept(unittest.TestCase): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/tests/api_tests.py new/openSUSE-release-tools-20220310.99e9d9a2/tests/api_tests.py --- old/openSUSE-release-tools-20220307.7fa0e0de/tests/api_tests.py 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/tests/api_tests.py 2022-03-10 15:03:42.000000000 +0100 @@ -2,6 +2,8 @@ from osclib.core import attribute_value_delete, attribute_value_save from . import OBSLocal +# CI-Node: Long1 + class TestApiCalls(OBSLocal.TestCase): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/tests/check_bugowner_tests.py new/openSUSE-release-tools-20220310.99e9d9a2/tests/check_bugowner_tests.py --- old/openSUSE-release-tools-20220307.7fa0e0de/tests/check_bugowner_tests.py 1970-01-01 01:00:00.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/tests/check_bugowner_tests.py 2022-03-10 15:03:42.000000000 +0100 @@ -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')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/tests/check_source_tests.py new/openSUSE-release-tools-20220310.99e9d9a2/tests/check_source_tests.py --- old/openSUSE-release-tools-20220307.7fa0e0de/tests/check_source_tests.py 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/tests/check_source_tests.py 2022-03-10 15:03:42.000000000 +0100 @@ -1,11 +1,11 @@ import logging from . import OBSLocal from check_source import CheckSource -import random import os from osc.core import get_request_list +import pytest -PROJECT = 'openSUSE:Factory' +PROJECT = 'Testing:Project' SRC_PROJECT = 'devel:Fishing' FIXTURES = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures') REVIEW_TEAM = 'reviewers-team' @@ -18,42 +18,57 @@ # Inherit from OBSLocal.Testcase since it provides many commodity methods for testing against # a local testing instance of OBS +# CI-Node: Long1 -class TestCheckSource(OBSLocal.TestCase): - def setUp(self): - super(TestCheckSource, self).setUp() +def _common_workflow(request): + # Using OBSLocal.FactoryWorkflow makes it easier to setup testing scenarios + wf = OBSLocal.FactoryWorkflow(PROJECT) + project = wf.projects[PROJECT] - # Using OBSLocal.FactoryWorkflow makes it easier to setup testing scenarios - self.wf = OBSLocal.FactoryWorkflow(PROJECT) - self.project = self.wf.projects[PROJECT] + # Set up the reviewers team + wf.create_group(REVIEW_TEAM) - # Set up the reviewers team - self.wf.create_group(REVIEW_TEAM) + request.cls.bot_user = 'factory-auto' - self.wf.remote_config_set( - {'required-source-maintainer': 'Admin', 'review-team': REVIEW_TEAM} - ) + 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 + + +def _add_review_bot(request): + # StagingWorkflow creates reviews with the reviewer set to bot_user, so it's necessary to + # configure our review bot to act upon such reviews + request.cls.review_bot = CheckSource(request.cls.wf.apiurl, user=request.cls.bot_user, logger=logging.getLogger()) - self.bot_user = 'factory-auto' - self.wf.create_user(self.bot_user) - # When creating a review, set the by_user to bot_user - self.project.add_reviewers(users=[self.bot_user]) - - # Ensure different test runs operate in unique namespace. - self.bot_name = '::'.join([type(self).__name__, str(random.getrandbits(8))]) - - # StagingWorkflow creates reviews with the reviewer set to bot_user, so it's necessary to - # configure our review bot to act upon such reviews - self.review_bot = CheckSource( - self.wf.apiurl, user=self.bot_user, logger=logging.getLogger(self.bot_name) - ) - self.review_bot.bot_name = self.bot_name - def tearDown(self): - super().tearDown() - del self.wf +@pytest.fixture +def required_source_maintainer(request): + _common_workflow(request) + request.cls.wf.remote_config_set( + {'required-source-maintainer': 'Admin', 'review-team': REVIEW_TEAM, 'devel-project-enforce': 'True'} + ) + _add_review_bot(request) + yield "workflow" + del request.cls.wf + + +@pytest.fixture +def default_config(request): + _common_workflow(request) + request.cls.wf.remote_config_set( + {'review-team': REVIEW_TEAM, 'devel-project-enforce': 'True'} + ) + _add_review_bot(request) + yield "workflow" + del request.cls.wf + + +class TestCheckSource(OBSLocal.TestCase): + @pytest.mark.usefixtures("default_config") def test_no_devel_project(self): """Declines the request when it does not come from a devel project""" req_id = self.wf.create_submit_request(SRC_PROJECT, self.randomString('package')).reqid @@ -66,6 +81,7 @@ review = self.assertReview(req_id, by_user=(self.bot_user, 'declined')) self.assertIn('%s is not a devel project of %s' % (SRC_PROJECT, PROJECT), review.comment) + @pytest.mark.usefixtures("required_source_maintainer") def test_devel_project(self): """Accepts a request coming from a devel project""" self._setup_devel_project() @@ -80,6 +96,7 @@ self.assertReview(req_id, by_user=(self.bot_user, 'accepted')) self.assertReview(req_id, by_group=(REVIEW_TEAM, 'new')) + @pytest.mark.usefixtures("default_config") def test_missing_patch_in_changelog(self): """Reject a request if it adds patch and it is not mentioned in changelog""" # devel files contain patch but not changes @@ -99,6 +116,7 @@ review.comment ) + @pytest.mark.usefixtures("default_config") def test_patch_in_changelog(self): """Accepts a request if it adds patch and it is mentioned in changelog""" self._setup_devel_project() @@ -114,6 +132,7 @@ self.assertReview(req_id, by_user=(self.bot_user, 'accepted')) self.assertReview(req_id, by_group=(REVIEW_TEAM, 'new')) + @pytest.mark.usefixtures("default_config") def test_revert_of_patch(self): """Accepts a request if it reverts addition of patch""" # switch target and devel, so basically do revert of changes done @@ -132,6 +151,7 @@ self.assertReview(req_id, by_user=(self.bot_user, 'accepted')) self.assertReview(req_id, by_group=(REVIEW_TEAM, 'new')) + @pytest.mark.usefixtures("required_source_maintainer") def test_no_source_maintainer(self): """Declines the request when the 'required_maintainer' is not maintainer of the source project @@ -167,6 +187,7 @@ self.assertEqual(len(add_role_reqs), 1) + @pytest.mark.usefixtures("required_source_maintainer") 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:', '') @@ -185,6 +206,7 @@ self.assertReview(req_id, by_user=(self.bot_user, 'accepted')) self.assertReview(req_id, by_group=(REVIEW_TEAM, 'new')) + @pytest.mark.usefixtures("required_source_maintainer") def test_source_inherited_maintainer(self): """Declines the request when the 'required_maintainer' is only inherited maintainer of the source project""" # Change the required maintainer @@ -221,5 +243,5 @@ self.devel_package.commit_files(fixtures_path) fixtures_path = os.path.join(FIXTURES, 'packages', target_files) - self.target_package = OBSLocal.Package('blowfish', self.project, devel_project=SRC_PROJECT) + self.target_package = OBSLocal.Package('blowfish', self.wf.projects[PROJECT], devel_project=SRC_PROJECT) self.target_package.commit_files(fixtures_path) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/tests/origin_tests.py new/openSUSE-release-tools-20220310.99e9d9a2/tests/origin_tests.py --- old/openSUSE-release-tools-20220307.7fa0e0de/tests/origin_tests.py 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/tests/origin_tests.py 2022-03-10 15:03:42.000000000 +0100 @@ -20,6 +20,8 @@ import yaml from . import OBSLocal +# CI-Node: Long2 + class TestOrigin(OBSLocal.TestCase): script = './origin-manager.py' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220307.7fa0e0de/tests/select_tests.py new/openSUSE-release-tools-20220310.99e9d9a2/tests/select_tests.py --- old/openSUSE-release-tools-20220307.7fa0e0de/tests/select_tests.py 2022-03-07 17:47:13.000000000 +0100 +++ new/openSUSE-release-tools-20220310.99e9d9a2/tests/select_tests.py 2022-03-10 15:03:42.000000000 +0100 @@ -11,6 +11,8 @@ from mock import MagicMock from . import OBSLocal +# CI-Node: Long1 + class TestSelect(OBSLocal.TestCase): ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.9tzHpP/_old 2022-03-11 11:48:28.650798199 +0100 +++ /var/tmp/diff_new_pack.9tzHpP/_new 2022-03-11 11:48:28.654798195 +0100 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20220307.7fa0e0de -mtime: 1646671633 -commit: 7fa0e0de0d1ab1fb00fed7aad91ecc4d77f38123 +version: 20220310.99e9d9a2 +mtime: 1646921022 +commit: 99e9d9a2eb2ccd72455c9c949f80e7d02b402de9