fix repo handing for bare wrapperRPM task
Fixes: https://pagure.io/koji/issue/4266
This commit is contained in:
parent
fccf4fa3f9
commit
d18aacfc5a
3 changed files with 32 additions and 21 deletions
|
|
@ -2248,13 +2248,17 @@ class WrapperRPMTask(BaseBuildTask):
|
|||
error_msg = 'custom_user_metadata is not JSON serializable'
|
||||
raise koji.BuildError(error_msg)
|
||||
|
||||
# sort out remaining buildroot params
|
||||
build_tag = self.session.getTag(build_target['build_tag'], strict=True)
|
||||
repo_id = opts.get('repo_id')
|
||||
if not repo_id:
|
||||
raise koji.BuildError("A repo id must be provided")
|
||||
|
||||
repo_info = self.session.repoInfo(repo_id, strict=True)
|
||||
# a parent task will generally pass in the repo it used, but if
|
||||
# we are top level, we'll need to find our own
|
||||
repo_info = self.getRepo(build_tag['id'])
|
||||
else:
|
||||
repo_info = self.session.repoInfo(repo_id, strict=True)
|
||||
repo_id = repo_info['id']
|
||||
event_id = repo_info['create_event']
|
||||
build_tag = self.session.getTag(build_target['build_tag'], strict=True)
|
||||
br_arch = self.find_arch('noarch', self.session.host.getHost(
|
||||
), self.session.getBuildConfig(build_tag['id'], event=event_id))
|
||||
|
||||
|
|
|
|||
|
|
@ -10828,11 +10828,10 @@ class RootExports(object):
|
|||
raise koji.PreBuildError('wrapper rpms for %s have already been built' %
|
||||
koji.buildLabel(build))
|
||||
build_target = self.getBuildTarget(target, strict=True)
|
||||
build_tag = self.getTag(build_target['build_tag'], strict=True)
|
||||
repo_info = self.getRepo(build_tag['id'])
|
||||
if not repo_info:
|
||||
raise koji.PreBuildError('no repo for tag: %s' % build_tag['name'])
|
||||
opts['repo_id'] = repo_info['id']
|
||||
if 'repo_id' in opts:
|
||||
# we ignore this opt for backwards compatibility
|
||||
logger.warning('The wrapperRPM call ignores repo_id options')
|
||||
del opts['repo_id']
|
||||
|
||||
taskOpts = {}
|
||||
if priority:
|
||||
|
|
|
|||
|
|
@ -76,18 +76,6 @@ class TestWrapperRPM(unittest.TestCase):
|
|||
self.assertEqual("wrapper rpms for %s have already been built" % self.build,
|
||||
str(cm.exception))
|
||||
|
||||
def test_no_repo_for_tag(self):
|
||||
self.context.opts.get.return_value = True
|
||||
self.exports.getBuild.return_value = self.buildinfo
|
||||
self.list_rpms.return_value = []
|
||||
self.exports.getBuildTarget.return_value = self.targetinfo
|
||||
self.exports.getTag.return_value = self.taginfo
|
||||
self.exports.getRepo.return_value = None
|
||||
|
||||
with self.assertRaises(koji.PreBuildError) as cm:
|
||||
self.exports.wrapperRPM(self.build, self.url, self.target)
|
||||
self.assertEqual("no repo for tag: %s" % self.taginfo['name'], str(cm.exception))
|
||||
|
||||
def test_priority_without_admin(self):
|
||||
priority = -10
|
||||
self.context.opts.get.return_value = True
|
||||
|
|
@ -100,3 +88,23 @@ class TestWrapperRPM(unittest.TestCase):
|
|||
with self.assertRaises(koji.GenericError) as cm:
|
||||
self.exports.wrapperRPM(self.build, self.url, self.target, priority=priority)
|
||||
self.assertEqual("only admins may create high-priority tasks", str(cm.exception))
|
||||
|
||||
def test_repo_id_ignored(self):
|
||||
self.context.opts.get.return_value = True
|
||||
self.exports.getBuild.return_value = self.buildinfo
|
||||
self.exports.getBuildTarget.return_value = self.targetinfo
|
||||
self.list_rpms.return_value = []
|
||||
self.exports.getTag.return_value = self.taginfo
|
||||
self.exports.getRepo.return_value = self.repoinfo
|
||||
self.context.session.hasPerm.return_value = False
|
||||
|
||||
opts = {'repo_id': 'REPO', 'scratch': True}
|
||||
self.exports.wrapperRPM(self.build, self.url, self.target, opts=opts)
|
||||
|
||||
self.make_task.assert_called_once()
|
||||
taskargs = self.make_task.call_args.args[1]
|
||||
expect_opts = {'scratch': True} # repo_id filtered out
|
||||
self.assertEqual(taskargs[4], expect_opts)
|
||||
|
||||
|
||||
# the end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue