kiwi-el8/test/unit/runtime_checker_test.py
Marcus Schäfer 720d34ddd8
Delete check_grub_efi_installed_for_efi_firmware
The motivation is nice to check if the required grub module
package is part of the package list if the efi firmware is
requested, but as long as there is no distribution wide
standard for packaging grub this check will cause more trouble
than it is of help. Currently it failed for the arm architecture
and the grub2-arm64-efi package. We decided to prevent checking
against static lists and dropped this runtime check. Missing
grub modules will be recognized at the grub stage when we
search for them.
2019-04-09 12:08:33 +02:00

291 lines
11 KiB
Python

from mock import patch
import mock
from .test_helper import raises
from kiwi.xml_state import XMLState
from kiwi.xml_description import XMLDescription
from kiwi.runtime_checker import RuntimeChecker
from kiwi.exceptions import KiwiRuntimeError
class TestRuntimeChecker(object):
def setup(self):
self.description = XMLDescription(
'../data/example_runtime_checker_config.xml'
)
self.xml_state = XMLState(
self.description.load()
)
self.runtime_checker = RuntimeChecker(self.xml_state)
@raises(KiwiRuntimeError)
def test_check_image_include_repos_publicly_resolvable(self):
self.runtime_checker.check_image_include_repos_publicly_resolvable()
@raises(KiwiRuntimeError)
def test_invalid_target_dir_pointing_to_shared_cache_1(self):
self.runtime_checker.check_target_directory_not_in_shared_cache(
'/var/cache//kiwi/foo'
)
@raises(KiwiRuntimeError)
def test_invalid_target_dir_pointing_to_shared_cache_2(self):
self.runtime_checker.check_target_directory_not_in_shared_cache(
'/var/cache/kiwi'
)
@raises(KiwiRuntimeError)
@patch('os.getcwd')
def test_invalid_target_dir_pointing_to_shared_cache_3(self, mock_getcwd):
mock_getcwd.return_value = '/'
self.runtime_checker.check_target_directory_not_in_shared_cache(
'var/cache/kiwi'
)
@raises(KiwiRuntimeError)
def test_invalid_target_dir_pointing_to_shared_cache_4(self):
self.runtime_checker.check_target_directory_not_in_shared_cache(
'//var/cache//kiwi/foo'
)
def test_valid_target_dir_1(self):
assert self.runtime_checker.check_target_directory_not_in_shared_cache(
'/var/cache/kiwi-fast-tmpsystemdir'
) is None
def test_valid_target_dir_2(self):
assert self.runtime_checker.check_target_directory_not_in_shared_cache(
'/foo/bar'
) is None
@raises(KiwiRuntimeError)
def test_check_repositories_configured(self):
self.xml_state.delete_repository_sections()
self.runtime_checker.check_repositories_configured()
@raises(KiwiRuntimeError)
def test_check_volume_setup_defines_multiple_fullsize_volumes(self):
self.runtime_checker.\
check_volume_setup_defines_multiple_fullsize_volumes()
@raises(KiwiRuntimeError)
def test_check_volume_setup_has_no_root_definition(self):
self.runtime_checker.check_volume_setup_has_no_root_definition()
@patch('kiwi.runtime_checker.Path.which')
@raises(KiwiRuntimeError)
def test_check_container_tool_chain_installed(self, mock_which):
mock_which.return_value = False
xml_state = XMLState(
self.description.load(), ['docker'], 'docker'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_container_tool_chain_installed()
@patch('kiwi.runtime_checker.RuntimeConfig.get_oci_archive_tool')
@patch('kiwi.runtime_checker.Path.which')
@raises(KiwiRuntimeError)
def test_check_container_tool_chain_installed_unknown_tool(
self, mock_which, mock_oci_tool
):
mock_oci_tool.return_value = 'budah'
mock_which.return_value = False
xml_state = XMLState(
self.description.load(), ['docker'], 'docker'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_container_tool_chain_installed()
@patch('kiwi.runtime_checker.RuntimeConfig.get_oci_archive_tool')
@patch('kiwi.runtime_checker.Path.which')
@raises(KiwiRuntimeError)
def test_check_container_tool_chain_installed_buildah(
self, mock_which, mock_oci_tool
):
mock_oci_tool.return_value = 'buildah'
mock_which.return_value = False
xml_state = XMLState(
self.description.load(), ['docker'], 'docker'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_container_tool_chain_installed()
@patch('kiwi.runtime_checker.Path.which')
@patch('kiwi.runtime_checker.CommandCapabilities.check_version')
@raises(KiwiRuntimeError)
def test_check_container_tool_chain_installed_with_version(
self, mock_cmdver, mock_which
):
mock_which.return_value = True
mock_cmdver.return_value = False
xml_state = XMLState(
self.description.load(), ['docker'], 'docker'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_container_tool_chain_installed()
@patch('kiwi.runtime_checker.Path.which')
@patch('kiwi.runtime_checker.CommandCapabilities.check_version')
@patch('kiwi.runtime_checker.CommandCapabilities.has_option_in_help')
@raises(KiwiRuntimeError)
def test_check_container_tool_chain_installed_with_multitags(
self, mock_cmdoptions, mock_cmdver, mock_which
):
mock_which.return_value = True
mock_cmdver.return_value = True
mock_cmdoptions.return_value = False
xml_state = XMLState(
self.description.load(), ['docker'], 'docker'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_container_tool_chain_installed()
@raises(KiwiRuntimeError)
@patch('platform.machine')
@patch('kiwi.runtime_checker.Defaults.get_boot_image_description_path')
def test_check_consistent_kernel_in_boot_and_system_image(
self, mock_boot_path, mock_machine
):
mock_boot_path.return_value = '../data'
mock_machine.return_value = 'x86_64'
xml_state = XMLState(
self.description.load(), ['vmxFlavour'], 'oem'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_consistent_kernel_in_boot_and_system_image()
@raises(KiwiRuntimeError)
def test_check_boot_description_exists_no_boot_ref(self):
description = XMLDescription(
'../data/example_runtime_checker_no_boot_reference.xml'
)
xml_state = XMLState(description.load())
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_boot_description_exists()
@raises(KiwiRuntimeError)
def test_check_boot_description_exists_does_not_exist(self):
description = XMLDescription(
'../data/example_runtime_checker_boot_desc_not_found.xml'
)
xml_state = XMLState(description.load())
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_boot_description_exists()
@raises(KiwiRuntimeError)
def test_check_xen_uniquely_setup_as_server_or_guest_for_ec2(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='ec2'
)
self.xml_state.is_xen_server = mock.Mock(
return_value=True
)
self.xml_state.is_xen_guest = mock.Mock(
return_value=True
)
self.runtime_checker.check_xen_uniquely_setup_as_server_or_guest()
@raises(KiwiRuntimeError)
def test_check_xen_uniquely_setup_as_server_or_guest_for_xen(self):
self.xml_state.build_type.get_firmware = mock.Mock(
return_value=None
)
self.xml_state.is_xen_server = mock.Mock(
return_value=True
)
self.xml_state.is_xen_guest = mock.Mock(
return_value=True
)
self.runtime_checker.check_xen_uniquely_setup_as_server_or_guest()
@raises(KiwiRuntimeError)
def test_check_dracut_module_for_disk_overlay_in_package_list(self):
xml_state = XMLState(
self.description.load(), ['vmxFlavour'], 'iso'
)
xml_state.build_type.get_overlayroot = mock.Mock(
return_value=True
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_dracut_module_for_disk_overlay_in_package_list()
@raises(KiwiRuntimeError)
def test_check_efi_mode_for_disk_overlay_correctly_setup(self):
self.xml_state.build_type.get_overlayroot = mock.Mock(
return_value=True
)
self.xml_state.build_type.get_firmware = mock.Mock(
return_value='uefi'
)
self.runtime_checker.check_efi_mode_for_disk_overlay_correctly_setup()
@raises(KiwiRuntimeError)
@patch('platform.machine')
def test_check_mediacheck_only_for_x86_arch_invalid_arch(
self, mock_machine
):
mock_machine.return_value = 'aarch64'
xml_state = XMLState(
self.description.load(), ['vmxFlavour'], 'iso'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_mediacheck_only_for_x86_arch()
@raises(KiwiRuntimeError)
@patch('platform.machine')
@patch('kiwi.runtime_checker.Path.which')
def test_check_mediacheck_only_for_x86_arch_tagmedia_missing(
self, mock_which, mock_machine
):
mock_machine.return_value = 'x86_64'
mock_which.return_value = False
xml_state = XMLState(
self.description.load(), ['vmxFlavour'], 'iso'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_mediacheck_only_for_x86_arch()
@raises(KiwiRuntimeError)
def test_check_dracut_module_for_live_iso_in_package_list(self):
xml_state = XMLState(
self.description.load(), ['vmxFlavour'], 'iso'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_dracut_module_for_live_iso_in_package_list()
@raises(KiwiRuntimeError)
def test_check_dracut_module_for_disk_oem_in_package_list(self):
xml_state = XMLState(
self.description.load(), ['vmxFlavour'], 'oem'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_dracut_module_for_disk_oem_in_package_list()
@raises(KiwiRuntimeError)
def test_check_dracut_module_for_oem_install_in_package_list(self):
xml_state = XMLState(
self.description.load(), ['vmxFlavour'], 'oem'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_dracut_module_for_oem_install_in_package_list()
@raises(KiwiRuntimeError)
def test_check_volume_label_used_with_lvm(self):
self.runtime_checker.check_volume_label_used_with_lvm()
@raises(KiwiRuntimeError)
def test_check_preferences_data_no_version(self):
xml_state = XMLState(
self.description.load(), ['docker'], 'docker'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_minimal_required_preferences()
@raises(KiwiRuntimeError)
def test_check_preferences_data_no_packagemanager(self):
xml_state = XMLState(
self.description.load(), ['xenFlavour'], 'vmx'
)
runtime_checker = RuntimeChecker(xml_state)
runtime_checker.check_minimal_required_preferences()