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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- 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/[email protected]
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"
+
+
[email protected]
+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
[email protected]
+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
+
+
[email protected]
+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