示例#1
0
    def packages_configuration_data_test(self):
        """Test the PackagesConfigurationData structure."""
        data = PackagesConfigurationData.to_structure(
            PackagesConfigurationData()
        )

        self._check_dbus_property(
            "PackagesConfiguration",
            data
        )
示例#2
0
    def test_set_rpm_macros_no_install_langs(self, mock_rpm):
        data = PackagesConfigurationData()
        data.languages = RPM_LANGUAGES_NONE

        macros = [
            ('__dbi_htconfig', 'hash nofsync %{__dbi_other} %{__dbi_perms}'),
            ('_install_langs', '%{nil}'),
        ]

        task = self._run_task(data)
        self._check_macros(task, mock_rpm, macros)
示例#3
0
    def test_set_rpm_macros_exclude_docs(self, mock_rpm):
        data = PackagesConfigurationData()
        data.docs_excluded = True

        macros = [
            ('__dbi_htconfig', 'hash nofsync %{__dbi_other} %{__dbi_perms}'),
            ('_excludedocs', '1'),
        ]

        task = self._run_task(data)
        self._check_macros(task, mock_rpm, macros)
示例#4
0
    def test_set_rpm_macros_install_langs(self, mock_rpm):
        data = PackagesConfigurationData()
        data.languages = "en,es"

        macros = [
            ('__dbi_htconfig', 'hash nofsync %{__dbi_other} %{__dbi_perms}'),
            ('_install_langs', 'en,es'),
        ]

        task = self._run_task(data)
        self._check_macros(task, mock_rpm, macros)
    def test_configure_base(self):
        """Test the configuration of the DNF base."""
        data = PackagesConfigurationData()

        self.dnf_manager.configure_base(data)
        self._check_configuration(
            "multilib_policy = best",
            "timeout = 30",
            "retries = 10",
            "install_weak_deps = 1",
        )

        assert self.dnf_manager._ignore_broken_packages is False
        assert self.dnf_manager._ignore_missing_packages is False

        data.multilib_policy = MULTILIB_POLICY_ALL
        data.timeout = 100
        data.retries = 5
        data.broken_ignored = True
        data.missing_ignored = True
        data.weakdeps_excluded = True

        self.dnf_manager.configure_base(data)
        self._check_configuration(
            "multilib_policy = all",
            "timeout = 100",
            "retries = 5",
            "install_weak_deps = 0",
        )

        assert self.dnf_manager._ignore_broken_packages is True
        assert self.dnf_manager._ignore_missing_packages is True
示例#6
0
    def test_error_update(self, execute):
        """The update of the DNF configuration has failed."""
        execute.side_effect = OSError("Fake!")

        with tempfile.TemporaryDirectory() as sysroot:
            data = PackagesConfigurationData()
            data.multilib_policy = MULTILIB_POLICY_ALL

            task = UpdateDNFConfigurationTask(sysroot, data)

            with self.assertLogs(level="WARNING") as cm:
                task.run()

            msg = "Couldn't update the DNF configuration: Fake!"
            assert any(map(lambda x: msg in x, cm.output))
示例#7
0
    def test_failed_update(self, execute):
        """The update of the DNF configuration has failed."""
        execute.return_value = 1

        with tempfile.TemporaryDirectory() as sysroot:
            data = PackagesConfigurationData()
            data.multilib_policy = MULTILIB_POLICY_ALL

            task = UpdateDNFConfigurationTask(sysroot, data)

            with self.assertLogs(level="WARNING") as cm:
                task.run()

            msg = "Failed to update the DNF configuration (1)."
            assert any(map(lambda x: msg in x, cm.output))
示例#8
0
    def PackagesConfiguration(self, data: Structure):
        """Set the packages configuration.

        :param data: a structure of the type PackagesConfigurationData
        """
        self.implementation.set_packages_configuration(
            PackagesConfigurationData.from_structure(data))
示例#9
0
    def PackagesConfiguration(self) -> Structure:
        """The packages configuration.

        :return: a structure of the type PackagesConfigurationData
        """
        return PackagesConfigurationData.to_structure(
            self.implementation.packages_configuration)
示例#10
0
    def test_set_rpm_macros_default(self, mock_rpm):
        data = PackagesConfigurationData()

        macros = [('__dbi_htconfig',
                   'hash nofsync %{__dbi_other} %{__dbi_perms}')]

        task = self._run_task(data)
        self._check_macros(task, mock_rpm, macros)
示例#11
0
    def test_multilib_policy(self, execute):
        """Update the multilib policy."""
        execute.return_value = 0

        with tempfile.TemporaryDirectory() as sysroot:
            data = PackagesConfigurationData()
            data.multilib_policy = MULTILIB_POLICY_ALL

            task = UpdateDNFConfigurationTask(sysroot, data)
            task.run()

            execute.assert_called_once_with("dnf", [
                "config-manager",
                "--save",
                "--setopt=multilib_policy=all",
            ],
                                            root=sysroot)
示例#12
0
    def test_no_update(self, execute):
        """Don't update the DNF configuration."""
        with tempfile.TemporaryDirectory() as sysroot:
            data = PackagesConfigurationData()

            task = UpdateDNFConfigurationTask(sysroot, data)
            task.run()

            execute.assert_not_called()
示例#13
0
文件: dnf.py 项目: zhoupeng/anaconda
    def __init__(self):
        super().__init__()
        self._packages_configuration = PackagesConfigurationData()
        self.packages_configuration_changed = Signal()

        self._packages_selection = PackagesSelectionData()
        self.packages_selection_changed = Signal()

        self._packages_kickstarted = False
示例#14
0
    def test_set_rpm_macros_selinux_disabled(self, mock_rpm, mock_conf):
        mock_conf.security.selinux = 0
        data = PackagesConfigurationData()

        macros = [
            ('__dbi_htconfig', 'hash nofsync %{__dbi_other} %{__dbi_perms}'),
            ('__file_context_path', '%{nil}'),
        ]

        task = self._run_task(data)
        self._check_macros(task, mock_rpm, macros)
示例#15
0
    def test_set_rpm_macros_selinux(self, mock_rpm, mock_os):
        mock_os.access.return_value = True
        data = PackagesConfigurationData()

        macros = [
            ('__dbi_htconfig', 'hash nofsync %{__dbi_other} %{__dbi_perms}'),
            ('__file_context_path', '/etc/selinux/targeted/contexts/files/file_contexts'),
        ]

        task = self._run_task(data)
        self._check_macros(task, mock_rpm, macros)
示例#16
0
 def get_packages_configuration(self) -> PackagesConfigurationData:
     """Get the DBus data with the packages configuration."""
     return PackagesConfigurationData.from_structure(
         self.proxy.PackagesConfiguration
     )
示例#17
0
 def set_packages_configuration(self, data: PackagesConfigurationData):
     """Set the DBus data with the packages configuration."""
     return self.proxy.SetPackagesConfiguration(
         PackagesConfigurationData.to_structure(data)
     )
示例#18
0
文件: dnf.py 项目: zhoupeng/anaconda
    def _process_kickstart_packages_configuration(self, data):
        """Process the kickstart packages configuration."""
        configuration = PackagesConfigurationData()
        configuration.docs_excluded = data.packages.excludeDocs
        configuration.weakdeps_excluded = data.packages.excludeWeakdeps

        if data.packages.handleMissing == KS_MISSING_IGNORE:
            configuration.missing_ignored = True

        if data.packages.handleBroken == KS_BROKEN_IGNORE:
            configuration.broken_ignored = True

        if data.packages.instLangs == "":
            configuration.languages = RPM_LANGUAGES_NONE
        elif data.packages.instLangs is not None:
            configuration.languages = data.packages.instLangs

        if data.packages.multiLib:
            configuration.multilib_policy = MULTILIB_POLICY_ALL

        if data.packages.timeout is not None:
            configuration.timeout = data.packages.timeout

        if data.packages.retries is not None:
            configuration.retries = data.packages.retries

        self.set_packages_configuration(configuration)