Esempio n. 1
0
    def setup(self, mock_path, mock_config, mock_open, mock_temp):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config
        tmpfile = mock.Mock()
        tmpfile.name = 'tmpfile'
        mock_temp.return_value = tmpfile
        root_bind = mock.Mock()
        root_bind.move_to_root = mock.Mock(
            return_value=['root-moved-arguments']
        )
        root_bind.root_dir = '../data'
        root_bind.shared_location = '/shared-dir'
        self.repo = RepositoryYum(root_bind)

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '/shared-dir/yum/cache'),
            call('main', 'reposdir', '/shared-dir/yum/repos'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat')
        ]
Esempio n. 2
0
    def setup(self, mock_warn, mock_path, mock_config, mock_open, mock_temp):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config
        tmpfile = mock.Mock()
        tmpfile.name = 'tmpfile'
        mock_temp.return_value = tmpfile
        root_bind = mock.Mock()
        root_bind.move_to_root = mock.Mock(
            return_value=['root-moved-arguments']
        )
        root_bind.root_dir = '../data'
        root_bind.shared_location = '/shared-dir'
        self.repo = RepositoryYum(
            root_bind, ['exclude_docs', '_install_langs%en_US:de_DE']
        )

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '/shared-dir/yum/cache'),
            call('main', 'reposdir', '/shared-dir/yum/repos'),
            call('main', 'pluginconfpath', '/shared-dir/yum/pluginconf'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'gpgcheck', '0'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat'),
            call('main', 'enabled', '1')
        ]
        mock_warn.assert_called_once_with(
            'rpm-excludedocs not supported for yum: ignoring'
        )
Esempio n. 3
0
    def setup(self, mock_warn, mock_path, mock_config, mock_open, mock_temp):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config
        tmpfile = mock.Mock()
        tmpfile.name = 'tmpfile'
        mock_temp.return_value = tmpfile
        root_bind = mock.Mock()
        root_bind.move_to_root = mock.Mock(
            return_value=['root-moved-arguments']
        )
        root_bind.root_dir = '../data'
        root_bind.shared_location = '/shared-dir'
        self.repo = RepositoryYum(root_bind, ['exclude_docs'])

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '/shared-dir/yum/cache'),
            call('main', 'reposdir', '/shared-dir/yum/repos'),
            call('main', 'pluginconfpath', '/shared-dir/yum/pluginconf'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'gpgcheck', '0'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat'),
            call('main', 'enabled', '1')
        ]
        mock_warn.assert_called_once_with(
            'rpm-excludedocs not supported for yum: ignoring'
        )
Esempio n. 4
0
 def __new__(self, root_bind, package_manager, custom_args=None):
     if package_manager == 'zypper':
         return RepositoryZypper(root_bind, custom_args)
     elif package_manager == 'yum':
         return RepositoryYum(root_bind, custom_args)
     elif package_manager == 'dnf':
         return RepositoryDnf(root_bind, custom_args)
     elif package_manager == 'apt-get':
         return RepositoryApt(root_bind, custom_args)
     else:
         raise KiwiRepositorySetupError(
             'Support for %s repository manager not implemented' %
             package_manager)
Esempio n. 5
0
class TestRepositoryYum(object):
    @patch('kiwi.repository.yum.NamedTemporaryFile')
    @patch_open
    @patch('kiwi.repository.yum.ConfigParser')
    @patch('kiwi.repository.yum.Path.create')
    @patch('kiwi.logger.log.warning')
    def setup(self, mock_warn, mock_path, mock_config, mock_open, mock_temp):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config
        tmpfile = mock.Mock()
        tmpfile.name = 'tmpfile'
        mock_temp.return_value = tmpfile
        root_bind = mock.Mock()
        root_bind.move_to_root = mock.Mock(
            return_value=['root-moved-arguments']
        )
        root_bind.root_dir = '../data'
        root_bind.shared_location = '/shared-dir'
        self.repo = RepositoryYum(
            root_bind, ['exclude_docs', '_install_langs%en_US:de_DE']
        )

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '/shared-dir/yum/cache'),
            call('main', 'reposdir', '/shared-dir/yum/repos'),
            call('main', 'pluginconfpath', '/shared-dir/yum/pluginconf'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'gpgcheck', '0'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat'),
            call('main', 'enabled', '1')
        ]
        mock_warn.assert_called_once_with(
            'rpm-excludedocs not supported for yum: ignoring'
        )

    @patch_open
    @patch('kiwi.repository.yum.NamedTemporaryFile')
    @patch('kiwi.repository.yum.Path.create')
    def test_post_init_no_custom_args(self, mock_path, mock_temp, mock_open):
        self.repo.post_init()
        assert self.repo.custom_args == []

    @patch_open
    @patch('kiwi.repository.yum.NamedTemporaryFile')
    @patch('kiwi.repository.yum.Path.create')
    def test_post_init_with_custom_args(self, mock_path, mock_temp, mock_open):
        self.repo.post_init(['check_signatures'])
        assert self.repo.custom_args == []
        assert self.repo.gpg_check == '1'

    @patch_open
    @patch('kiwi.repository.yum.ConfigParser')
    def test_use_default_location(self, mock_config, mock_open):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config

        self.repo.use_default_location()

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '../data/var/cache/yum'),
            call('main', 'reposdir', '../data/etc/yum.repos.d'),
            call('main', 'pluginconfpath', '../data/etc/yum/pluginconf.d'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'gpgcheck', '0'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat'),
            call('main', 'enabled', '1')
        ]

    def test_runtime_config(self):
        assert self.repo.runtime_config()['yum_args'] == \
            self.repo.yum_args
        assert self.repo.runtime_config()['command_env'] == \
            self.repo.command_env

    @patch('kiwi.repository.yum.RpmDataBase')
    def test_setup_package_database_configuration(self, mock_RpmDataBase):
        rpmdb = mock.Mock()
        mock_RpmDataBase.return_value = rpmdb
        self.repo.setup_package_database_configuration()
        assert mock_RpmDataBase.call_args_list == [
            call('../data', 'macros.kiwi-image-config'),
            call('../data')
        ]
        rpmdb.set_macro_from_string.assert_called_once_with(
            '_install_langs%en_US:de_DE'
        )
        rpmdb.write_config.assert_called_once_with()
        rpmdb.set_database_to_host_path.assert_called_once_with()

    @patch('kiwi.repository.yum.ConfigParser')
    @patch('os.path.exists')
    @patch_open
    def test_add_repo(self, mock_open, mock_exists, mock_config):
        repo_config = mock.Mock()
        mock_config.return_value = repo_config
        mock_exists.return_value = True

        self.repo.add_repo('foo', 'kiwi_iso_mount/uri', 'rpm-md', 42)

        repo_config.add_section.assert_called_once_with('foo')
        assert repo_config.set.call_args_list == [
            call('foo', 'name', 'foo'),
            call('foo', 'baseurl', 'file://kiwi_iso_mount/uri'),
            call('foo', 'enabled', '1'),
            call('foo', 'priority', '42')
        ]
        mock_open.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo', 'w'
        )

    @patch('kiwi.repository.yum.ConfigParser')
    @patch('os.path.exists')
    @patch_open
    def test_add_repo_with_gpgchecks(
        self, mock_open, mock_exists, mock_config
    ):
        repo_config = mock.Mock()
        mock_config.return_value = repo_config
        mock_exists.return_value = True

        self.repo.add_repo(
            'foo', 'kiwi_iso_mount/uri', 'rpm-md', 42,
            repo_gpgcheck=False, pkg_gpgcheck=True
        )

        repo_config.add_section.assert_called_once_with('foo')
        assert repo_config.set.call_args_list == [
            call('foo', 'name', 'foo'),
            call('foo', 'baseurl', 'file://kiwi_iso_mount/uri'),
            call('foo', 'enabled', '1'),
            call('foo', 'priority', '42'),
            call('foo', 'repo_gpgcheck', '0'),
            call('foo', 'gpgcheck', '1')
        ]
        mock_open.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo', 'w'
        )

    @patch('kiwi.command.Command.run')
    def test_import_trusted_keys(self, mock_run):
        self.repo.import_trusted_keys(['key-file-a.asc', 'key-file-b.asc'])
        assert mock_run.call_args_list == [
            call(['rpm', '--root', '../data', '--import', 'key-file-a.asc']),
            call(['rpm', '--root', '../data', '--import', 'key-file-b.asc'])
        ]

    @patch('kiwi.path.Path.wipe')
    def test_delete_repo(self, mock_wipe):
        self.repo.delete_repo('foo')
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo'
        )

    @patch('kiwi.path.Path.wipe')
    @patch('os.walk')
    def test_cleanup_unused_repos(self, mock_walk, mock_path):
        mock_walk.return_value = [
            ('/foo', ('bar', 'baz'), ('spam', 'eggs'))
        ]
        self.repo.repo_names = ['eggs']
        self.repo.cleanup_unused_repos()
        mock_path.assert_called_once_with(
            '/shared-dir/yum/repos/spam'
        )

    @patch('kiwi.path.Path.wipe')
    @patch('kiwi.path.Path.create')
    def test_delete_all_repos(self, mock_create, mock_wipe):
        self.repo.delete_all_repos()
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/repos'
        )
        mock_create.assert_called_once_with(
            '/shared-dir/yum/repos'
        )

    @patch('kiwi.path.Path.wipe')
    def test_delete_repo_cache(self, mock_wipe):
        self.repo.delete_repo_cache('foo')
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/cache/foo'
        )
Esempio n. 6
0
class TestRepositoryYum(object):
    @patch('kiwi.repository.yum.NamedTemporaryFile')
    @patch_open
    @patch('kiwi.repository.yum.ConfigParser')
    @patch('kiwi.repository.yum.Path.create')
    def setup(self, mock_path, mock_config, mock_open, mock_temp):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config
        tmpfile = mock.Mock()
        tmpfile.name = 'tmpfile'
        mock_temp.return_value = tmpfile
        root_bind = mock.Mock()
        root_bind.move_to_root = mock.Mock(
            return_value=['root-moved-arguments']
        )
        root_bind.root_dir = '../data'
        root_bind.shared_location = '/shared-dir'
        self.repo = RepositoryYum(root_bind)

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '/shared-dir/yum/cache'),
            call('main', 'reposdir', '/shared-dir/yum/repos'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat')
        ]

    @patch_open
    @patch('kiwi.repository.yum.ConfigParser')
    def test_use_default_location(self, mock_config, mock_open):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config

        self.repo.use_default_location()

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '../data/var/cache/yum'),
            call('main', 'reposdir', '../data/etc/yum/repos.d'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat')
        ]

    def test_runtime_config(self):
        assert self.repo.runtime_config()['yum_args'] == \
            self.repo.yum_args
        assert self.repo.runtime_config()['command_env'] == \
            self.repo.command_env

    @patch('kiwi.repository.yum.ConfigParser')
    @patch('os.path.exists')
    @patch_open
    def test_add_repo(self, mock_open, mock_exists, mock_config):
        repo_config = mock.Mock()
        mock_config.return_value = repo_config
        mock_exists.return_value = True

        self.repo.add_repo('foo', 'kiwi_iso_mount/uri', 'rpm-md', 42)

        repo_config.add_section.assert_called_once_with('foo')
        assert repo_config.set.call_args_list == [
            call('foo', 'name', 'foo'),
            call('foo', 'baseurl', 'file://kiwi_iso_mount/uri'),
            call('foo', 'priority', '42')
        ]
        mock_open.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo', 'w'
        )

    @patch('kiwi.path.Path.wipe')
    def test_delete_repo(self, mock_wipe):
        self.repo.delete_repo('foo')
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo'
        )

    @patch('kiwi.path.Path.wipe')
    @patch('os.walk')
    def test_cleanup_unused_repos(self, mock_walk, mock_path):
        mock_walk.return_value = [
            ('/foo', ('bar', 'baz'), ('spam', 'eggs'))
        ]
        self.repo.repo_names = ['eggs']
        self.repo.cleanup_unused_repos()
        mock_path.assert_called_once_with(
            '/shared-dir/yum/repos/spam'
        )

    @patch('kiwi.path.Path.wipe')
    @patch('kiwi.path.Path.create')
    def test_delete_all_repos(self, mock_create, mock_wipe):
        self.repo.delete_all_repos()
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/repos'
        )
        mock_create.assert_called_once_with(
            '/shared-dir/yum/repos'
        )
Esempio n. 7
0
class TestRepositoryYum(object):
    @patch('kiwi.repository.yum.NamedTemporaryFile')
    @patch_open
    @patch('kiwi.repository.yum.ConfigParser')
    @patch('kiwi.repository.yum.Path.create')
    @patch('kiwi.logger.log.warning')
    def setup(self, mock_warn, mock_path, mock_config, mock_open, mock_temp):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config
        tmpfile = mock.Mock()
        tmpfile.name = 'tmpfile'
        mock_temp.return_value = tmpfile
        root_bind = mock.Mock()
        root_bind.move_to_root = mock.Mock(
            return_value=['root-moved-arguments']
        )
        root_bind.root_dir = '../data'
        root_bind.shared_location = '/shared-dir'
        self.repo = RepositoryYum(root_bind, ['exclude_docs'])

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '/shared-dir/yum/cache'),
            call('main', 'reposdir', '/shared-dir/yum/repos'),
            call('main', 'pluginconfpath', '/shared-dir/yum/pluginconf'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'gpgcheck', '0'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat'),
            call('main', 'enabled', '1')
        ]
        mock_warn.assert_called_once_with(
            'rpm-excludedocs not supported for yum: ignoring'
        )

    @patch_open
    @patch('kiwi.repository.yum.NamedTemporaryFile')
    @patch('kiwi.repository.yum.Path.create')
    def test_post_init_no_custom_args(self, mock_path, mock_temp, mock_open):
        self.repo.post_init()
        assert self.repo.custom_args == []

    @patch_open
    @patch('kiwi.repository.yum.NamedTemporaryFile')
    @patch('kiwi.repository.yum.Path.create')
    def test_post_init_with_custom_args(self, mock_path, mock_temp, mock_open):
        self.repo.post_init(['check_signatures'])
        assert self.repo.custom_args == []
        assert self.repo.gpg_check == '1'

    @patch_open
    @patch('kiwi.repository.yum.ConfigParser')
    def test_use_default_location(self, mock_config, mock_open):
        runtime_yum_config = mock.Mock()
        mock_config.return_value = runtime_yum_config

        self.repo.use_default_location()

        assert runtime_yum_config.set.call_args_list == [
            call('main', 'cachedir', '../data/var/cache/yum'),
            call('main', 'reposdir', '../data/etc/yum.repos.d'),
            call('main', 'pluginconfpath', '../data/etc/yum/pluginconf.d'),
            call('main', 'keepcache', '1'),
            call('main', 'debuglevel', '2'),
            call('main', 'pkgpolicy', 'newest'),
            call('main', 'tolerant', '0'),
            call('main', 'exactarch', '1'),
            call('main', 'obsoletes', '1'),
            call('main', 'plugins', '1'),
            call('main', 'gpgcheck', '0'),
            call('main', 'metadata_expire', '1800'),
            call('main', 'group_command', 'compat'),
            call('main', 'enabled', '1')
        ]

    def test_runtime_config(self):
        assert self.repo.runtime_config()['yum_args'] == \
            self.repo.yum_args
        assert self.repo.runtime_config()['command_env'] == \
            self.repo.command_env

    @patch('kiwi.repository.yum.ConfigParser')
    @patch('os.path.exists')
    @patch_open
    def test_add_repo(self, mock_open, mock_exists, mock_config):
        repo_config = mock.Mock()
        mock_config.return_value = repo_config
        mock_exists.return_value = True

        self.repo.add_repo('foo', 'kiwi_iso_mount/uri', 'rpm-md', 42)

        repo_config.add_section.assert_called_once_with('foo')
        assert repo_config.set.call_args_list == [
            call('foo', 'name', 'foo'),
            call('foo', 'baseurl', 'file://kiwi_iso_mount/uri'),
            call('foo', 'enabled', '1'),
            call('foo', 'priority', '42')
        ]
        mock_open.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo', 'w'
        )

    @patch('kiwi.repository.yum.ConfigParser')
    @patch('os.path.exists')
    @patch_open
    def test_add_repo_with_gpgchecks(
        self, mock_open, mock_exists, mock_config
    ):
        repo_config = mock.Mock()
        mock_config.return_value = repo_config
        mock_exists.return_value = True

        self.repo.add_repo(
            'foo', 'kiwi_iso_mount/uri', 'rpm-md', 42,
            repo_gpgcheck=False, pkg_gpgcheck=True
        )

        repo_config.add_section.assert_called_once_with('foo')
        assert repo_config.set.call_args_list == [
            call('foo', 'name', 'foo'),
            call('foo', 'baseurl', 'file://kiwi_iso_mount/uri'),
            call('foo', 'enabled', '1'),
            call('foo', 'priority', '42'),
            call('foo', 'repo_gpgcheck', '0'),
            call('foo', 'gpgcheck', '1')
        ]
        mock_open.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo', 'w'
        )

    @patch('kiwi.command.Command.run')
    def test_import_trusted_keys(self, mock_run):
        self.repo.import_trusted_keys(['key-file-a.asc', 'key-file-b.asc'])
        assert mock_run.call_args_list == [
            call(['rpm', '--root', '../data', '--import', 'key-file-a.asc']),
            call(['rpm', '--root', '../data', '--import', 'key-file-b.asc'])
        ]

    @patch('kiwi.path.Path.wipe')
    def test_delete_repo(self, mock_wipe):
        self.repo.delete_repo('foo')
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/repos/foo.repo'
        )

    @patch('kiwi.path.Path.wipe')
    @patch('os.walk')
    def test_cleanup_unused_repos(self, mock_walk, mock_path):
        mock_walk.return_value = [
            ('/foo', ('bar', 'baz'), ('spam', 'eggs'))
        ]
        self.repo.repo_names = ['eggs']
        self.repo.cleanup_unused_repos()
        mock_path.assert_called_once_with(
            '/shared-dir/yum/repos/spam'
        )

    @patch('kiwi.path.Path.wipe')
    @patch('kiwi.path.Path.create')
    def test_delete_all_repos(self, mock_create, mock_wipe):
        self.repo.delete_all_repos()
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/repos'
        )
        mock_create.assert_called_once_with(
            '/shared-dir/yum/repos'
        )

    @patch('kiwi.path.Path.wipe')
    def test_delete_repo_cache(self, mock_wipe):
        self.repo.delete_repo_cache('foo')
        mock_wipe.assert_called_once_with(
            '/shared-dir/yum/cache/foo'
        )