drop builder changes for now
This commit is contained in:
parent
96e7cc1634
commit
64d6b3f0f7
2 changed files with 13 additions and 212 deletions
|
|
@ -1,158 +0,0 @@
|
|||
from __future__ import absolute_import
|
||||
try:
|
||||
from unittest import mock
|
||||
except ImportError:
|
||||
import mock
|
||||
import os
|
||||
import rpm
|
||||
import shutil
|
||||
import tempfile
|
||||
import threading
|
||||
import unittest
|
||||
import koji
|
||||
import koji.tasks
|
||||
from .loadkojid import kojid
|
||||
from six.moves import range
|
||||
from functools import partial
|
||||
|
||||
|
||||
mylock = threading.Lock()
|
||||
|
||||
|
||||
class TestWrapperRPM(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.tempdir = tempfile.mkdtemp()
|
||||
self.session = mock.MagicMock()
|
||||
self.options = mock.MagicMock()
|
||||
self.options.copy_old_repodata = False
|
||||
self.options.createrepo_update = True
|
||||
self.topdir = self.tempdir + '/topdir'
|
||||
self.options.topdir = self.topdir
|
||||
self.pathinfo = koji.PathInfo(self.topdir)
|
||||
mock.patch('koji.pathinfo', new=self.pathinfo).start()
|
||||
|
||||
# set up task handler
|
||||
task_id = 99
|
||||
method = 'wrapperRPM'
|
||||
self.spec_url = 'SPEC_URL'
|
||||
self.target = {'id': 123, 'name': 'TARGET', 'build_tag': 456}
|
||||
self.build = {'id': 12345, 'state': 1, 'name': '_name', 'version': '_version',
|
||||
'release': '_release'}
|
||||
self.task = None
|
||||
self.opts = {}
|
||||
params = [self.spec_url, self.target, self.build, self.task, self.opts]
|
||||
self.handler = kojid.WrapperRPMTask(task_id, method, params, self.session,
|
||||
self.options, self.tempdir + '/work')
|
||||
|
||||
self.handler.find_arch = mock.MagicMock()
|
||||
self.handler.chownTree = mock.MagicMock()
|
||||
self.handler.localPath = self.my_localPath
|
||||
|
||||
# mock some more things
|
||||
self.wait = mock.MagicMock()
|
||||
self.handler.wait = self.wait
|
||||
self.session.getExternalRepoList.return_value = []
|
||||
self.SCM = mock.patch.object(kojid, 'SCM').start()
|
||||
self.SCM.return_value.assert_allowed = mock.MagicMock()
|
||||
self.SCM.return_value.checkout.side_effect = self.my_checkout
|
||||
self.BuildRoot = mock.patch.object(kojid, 'BuildRoot').start()
|
||||
self.BuildRoot().resultdir.return_value = self.tempdir + '/result'
|
||||
mock.patch('pwd.getpwnam').start()
|
||||
mock.patch('grp.getgrnam').start()
|
||||
|
||||
# default to a maven build
|
||||
self.session.getMavenBuild.return_value = {'build_id': 12345, 'artifact_id': 'ARTIFACT'}
|
||||
self.session.getWinBuild.return_value = None
|
||||
self.session.getImageBuild.return_value = None
|
||||
|
||||
self.session.listArchives.return_value = [{'id': 999, 'filename': 'test.pom',
|
||||
'group_id': 'GROUP', 'artifact_id': 'ARTIFACT',
|
||||
'version': 'VERSION', 'name': 'NAME'}]
|
||||
# This handler relies on chdir
|
||||
mylock.acquire()
|
||||
self.savecwd = os.getcwd()
|
||||
|
||||
def tearDown(self):
|
||||
# clean up the chdir
|
||||
os.chdir(self.savecwd)
|
||||
mylock.release()
|
||||
mock.patch.stopall()
|
||||
shutil.rmtree(self.tempdir)
|
||||
|
||||
def my_checkout(self, *a, **kw):
|
||||
return self.my_checkout2(['foo.spec.tmpl'], *a, **kw)
|
||||
|
||||
def my_checkout2(self, relpaths, *a, **kw):
|
||||
scmdir = self.tempdir + '/checkout'
|
||||
koji.ensuredir(scmdir)
|
||||
for relpath in relpaths:
|
||||
fn = koji.util.joinpath(scmdir, relpath)
|
||||
with open(fn, 'wt') as fp:
|
||||
fp.write(f'Hello World\n{relpath}\n')
|
||||
return scmdir
|
||||
|
||||
def my_localPath(self, relpath):
|
||||
path = koji.util.joinpath(self.tempdir, relpath)
|
||||
koji.ensuredir(os.path.dirname(path))
|
||||
with open(path, 'wt') as fp:
|
||||
fp.write('Hola Mundo\n')
|
||||
return path
|
||||
|
||||
def write_srpm(self):
|
||||
fn = self.tempdir + '/result/foo.src.rpm'
|
||||
koji.ensuredir(os.path.dirname(fn))
|
||||
with open(fn, 'wt') as fp:
|
||||
fp.write('Bonjour le monde\n')
|
||||
|
||||
def my_build(self, *a, **kw):
|
||||
self.write_srpm()
|
||||
fn = self.tempdir + '/result/foo.noarch.rpm'
|
||||
koji.ensuredir(os.path.dirname(fn))
|
||||
with open(fn, 'wt') as fp:
|
||||
fp.write('Ahoj světe\n')
|
||||
|
||||
def test_basic(self):
|
||||
# self.session.getTag.return_value = {'id': 'TAGID', 'name': 'TAG'}
|
||||
self.write_srpm()
|
||||
# rewrite the srpm when build is called
|
||||
self.BuildRoot().build.side_effect = self.my_build
|
||||
|
||||
# this handler relies on os.chdir
|
||||
result = self.handler.run()
|
||||
|
||||
self.assertEqual(result['srpm'], 'foo.src.rpm')
|
||||
self.assertEqual(result['rpms'], ['foo.noarch.rpm'])
|
||||
|
||||
|
||||
def test_basic_jinja(self):
|
||||
# self.session.getTag.return_value = {'id': 'TAGID', 'name': 'TAG'}
|
||||
self.write_srpm()
|
||||
# rewrite the srpm when build is called
|
||||
self.BuildRoot().build.side_effect = self.my_build
|
||||
# use a jinja template
|
||||
self.SCM.return_value.checkout.side_effect = partial(self.my_checkout2, ['foo.spec.j2'])
|
||||
|
||||
# this handler relies on os.chdir
|
||||
self.opts['jinja'] = True
|
||||
result = self.handler.run()
|
||||
|
||||
self.assertEqual(result['srpm'], 'foo.src.rpm')
|
||||
self.assertEqual(result['rpms'], ['foo.noarch.rpm'])
|
||||
|
||||
def test_jinja_requires_opt(self):
|
||||
# self.session.getTag.return_value = {'id': 'TAGID', 'name': 'TAG'}
|
||||
self.write_srpm()
|
||||
# rewrite the srpm when build is called
|
||||
self.BuildRoot().build.side_effect = self.my_build
|
||||
# use a jinja template
|
||||
self.SCM.return_value.checkout.side_effect = partial(self.my_checkout2, ['foo.spec.j2'])
|
||||
|
||||
# this handler relies on os.chdir
|
||||
with self.assertRaises(koji.BuildError) as ex:
|
||||
result = self.handler.run()
|
||||
|
||||
self.assertIn('no spec file template found', str(ex.exception))
|
||||
|
||||
|
||||
# the end
|
||||
Loading…
Add table
Add a link
Reference in a new issue