56e00505e0
We need to include all relevant arches, not just the base one (including noarch and src). However the list can be shortened by only listing NEVRs, because that should be unique. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
95 lines
4.8 KiB
Python
95 lines
4.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import mock
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
|
|
|
from pungi.phases.gather.methods import method_deps as deps
|
|
from tests import helpers
|
|
|
|
|
|
class TestWritePungiConfig(helpers.PungiTestCase):
|
|
def setUp(self):
|
|
super(TestWritePungiConfig, self).setUp()
|
|
self.compose = helpers.DummyCompose(self.topdir, {})
|
|
self.compose.DEBUG = False
|
|
|
|
def assertWritten(self, PungiWrapper, **kwargs):
|
|
wrapper = PungiWrapper.return_value
|
|
self.assertEqual(wrapper.mock_calls,
|
|
[mock.call.write_kickstart(**kwargs)])
|
|
|
|
@mock.patch('pungi.phases.gather.methods.method_deps.PungiWrapper')
|
|
def test_correct(self, PungiWrapper):
|
|
pkgs = [('pkg1', None), ('pkg2', 'x86_64')]
|
|
grps = ['grp1']
|
|
filter = [('pkg3', None), ('pkg4', 'x86_64')]
|
|
white = mock.Mock()
|
|
black = mock.Mock()
|
|
prepopulate = mock.Mock()
|
|
fulltree = mock.Mock()
|
|
deps.write_pungi_config(self.compose, 'x86_64', self.compose.variants['Server'],
|
|
pkgs, grps, filter, white, black,
|
|
prepopulate=prepopulate, fulltree_excludes=fulltree)
|
|
self.assertWritten(PungiWrapper, packages=['pkg1', 'pkg2.x86_64'],
|
|
ks_path=self.topdir + '/work/x86_64/pungi/Server.x86_64.conf',
|
|
lookaside_repos={}, multilib_whitelist=white, multilib_blacklist=black,
|
|
groups=['grp1'], prepopulate=prepopulate,
|
|
repos={'pungi-repo': self.topdir + '/work/x86_64/repo'},
|
|
exclude_packages=['pkg3', 'pkg4.x86_64'],
|
|
fulltree_excludes=fulltree, package_whitelist=set())
|
|
|
|
@mock.patch('pungi.phases.gather.get_lookaside_repos')
|
|
@mock.patch('pungi.phases.gather.methods.method_deps.PungiWrapper')
|
|
def test_with_lookaside(self, PungiWrapper, glr):
|
|
glr.return_value = ['http://example.com/repo']
|
|
pkgs = [('pkg1', None)]
|
|
deps.write_pungi_config(self.compose, 'x86_64', self.compose.variants['Server'],
|
|
pkgs, [], [], [], [])
|
|
self.assertWritten(PungiWrapper, packages=['pkg1'],
|
|
ks_path=self.topdir + '/work/x86_64/pungi/Server.x86_64.conf',
|
|
lookaside_repos={'lookaside-repo-0': 'http://example.com/repo'},
|
|
multilib_whitelist=[], multilib_blacklist=[],
|
|
groups=[], prepopulate=None,
|
|
repos={'pungi-repo': self.topdir + '/work/x86_64/repo'},
|
|
exclude_packages=[], fulltree_excludes=None,
|
|
package_whitelist=set())
|
|
self.assertEqual(glr.call_args_list,
|
|
[mock.call(self.compose, 'x86_64', self.compose.variants['Server'])])
|
|
|
|
@mock.patch('pungi.phases.gather.methods.method_deps.PungiWrapper')
|
|
def test_with_whitelist(self, PungiWrapper):
|
|
pkgs = [('pkg1', None), ('pkg2', 'x86_64')]
|
|
grps = ['grp1']
|
|
filter = [('pkg3', None), ('pkg4', 'x86_64')]
|
|
mock_rpm = mock.Mock(version='1.0.0', release='1', epoch=0)
|
|
mock_rpm.name = 'pkg'
|
|
self.compose.variants['Server'].pkgset.rpms_by_arch['x86_64'] = [mock_rpm]
|
|
white = mock.Mock()
|
|
black = mock.Mock()
|
|
prepopulate = mock.Mock()
|
|
fulltree = mock.Mock()
|
|
deps.write_pungi_config(self.compose, 'x86_64', self.compose.variants['Server'],
|
|
pkgs, grps, filter, white, black,
|
|
prepopulate=prepopulate, fulltree_excludes=fulltree)
|
|
self.assertWritten(PungiWrapper, packages=['pkg1', 'pkg2.x86_64'],
|
|
ks_path=self.topdir + '/work/x86_64/pungi/Server.x86_64.conf',
|
|
lookaside_repos={}, multilib_whitelist=white, multilib_blacklist=black,
|
|
groups=['grp1'], prepopulate=prepopulate,
|
|
repos={'pungi-repo': self.topdir + '/work/x86_64/repo'},
|
|
exclude_packages=['pkg3', 'pkg4.x86_64'],
|
|
fulltree_excludes=fulltree,
|
|
package_whitelist=set(['pkg-0:1.0.0-1']))
|
|
|
|
@mock.patch('pungi.phases.gather.methods.method_deps.PungiWrapper')
|
|
def test_without_input(self, PungiWrapper):
|
|
with self.assertRaises(RuntimeError) as ctx:
|
|
deps.write_pungi_config(self.compose, 'x86_64', self.compose.variants['Server'],
|
|
[], [], [], [], [])
|
|
self.assertEqual(
|
|
str(ctx.exception),
|
|
'No packages included in Server.x86_64 (no comps groups, no input packages, no prepopulate)')
|
|
self.assertEqual(PungiWrapper.return_value.mock_calls, [])
|