kiwi-el8/test/unit/bootloader_config_isolinux_test.py
Marcus Schäfer 3e7676c85d
Added serial console support for isolinux loader
Generate a serial line setup for the isolinux.cfg file
according to the bootloader_console attribute from the
XML description. In addition delete the use of the obsolete
vga kernel parameter and work with the MENU RESOLUTION
ui configuration parameter instead
2016-06-24 14:30:26 +02:00

184 lines
6.4 KiB
Python

from mock import patch
from mock import call
import mock
import kiwi
from .test_helper import *
from kiwi.xml_state import XMLState
from kiwi.xml_description import XMLDescription
from kiwi.exceptions import *
from kiwi.bootloader.config.isolinux import BootLoaderConfigIsoLinux
class TestBootLoaderConfigIsoLinux(object):
@patch('os.path.exists')
@patch('platform.machine')
def setup(self, mock_machine, mock_exists):
mock_machine.return_value = 'x86_64'
mock_exists.return_value = True
description = XMLDescription(
'../data/example_config.xml'
)
self.state = XMLState(
description.load()
)
kiwi.bootloader.config.isolinux.Path = mock.Mock()
kiwi.bootloader.config.base.Path = mock.Mock()
self.isolinux = mock.Mock()
kiwi.bootloader.config.isolinux.BootLoaderTemplateIsoLinux = mock.Mock(
return_value=self.isolinux
)
self.bootloader = BootLoaderConfigIsoLinux(
self.state, 'root_dir'
)
self.bootloader.get_hypervisor_domain = mock.Mock(
return_value='domU'
)
@raises(KiwiBootLoaderIsoLinuxPlatformError)
@patch('platform.machine')
def test_post_init_invalid_platform(self, mock_machine):
mock_machine.return_value = 'unsupported-arch'
BootLoaderConfigIsoLinux(mock.Mock(), 'root_dir')
@patch('platform.machine')
def test_post_init_ix86_platform(self, mock_machine):
xml_state = XMLState(
XMLDescription('../data/example_config.xml').load()
)
mock_machine.return_value = 'i686'
bootloader = BootLoaderConfigIsoLinux(xml_state, 'root_dir')
assert bootloader.arch == 'ix86'
@patch('os.path.exists')
@patch('platform.machine')
def test_post_init_dom0(self, mock_machine, mock_exists):
mock_machine.return_value = 'x86_64'
self.bootloader.get_hypervisor_domain.return_value = 'dom0'
mock_exists.return_value = True
self.bootloader.post_init(None)
assert self.bootloader.multiboot is True
@patch_open
@patch('os.path.exists')
def test_write(self, mock_exists, mock_open):
mock_exists.return_value = True
context_manager_mock = mock.Mock()
mock_open.return_value = context_manager_mock
file_mock = mock.Mock()
enter_mock = mock.Mock()
exit_mock = mock.Mock()
enter_mock.return_value = file_mock
setattr(context_manager_mock, '__enter__', enter_mock)
setattr(context_manager_mock, '__exit__', exit_mock)
self.bootloader.config = 'some-data'
self.bootloader.config_message = 'some-message-data'
self.bootloader.write()
assert mock_open.call_args_list == [
call('root_dir/boot/x86_64/loader/isolinux.cfg', 'w'),
call('root_dir/boot/x86_64/loader/isolinux.msg', 'w')
]
assert file_mock.write.call_args_list == [
call('some-data'),
call('some-message-data')
]
def test_setup_install_image_config(self):
template_cfg = mock.Mock()
template_msg = mock.Mock()
self.isolinux.get_install_template.return_value = template_cfg
self.isolinux.get_install_message_template.return_value = template_msg
self.bootloader.setup_install_image_config(mbrid=None)
self.isolinux.get_install_template.assert_called_once_with(
True, False, None
)
self.isolinux.get_install_message_template.assert_called_once_with()
assert template_cfg.substitute.called
assert template_msg.substitute.called
def test_setup_install_image_config_multiboot(self):
self.bootloader.multiboot = True
self.bootloader.setup_install_image_config(mbrid=None)
self.isolinux.get_multiboot_install_template.assert_called_once_with(
True, False, None
)
@patch('os.path.exists')
def test_setup_install_image_config_with_theme(self, mock_exists):
mock_exists.return_value = True
self.bootloader.setup_install_image_config(mbrid=None)
self.isolinux.get_install_template.assert_called_once_with(
True, True, None
)
@raises(KiwiTemplateError)
def test_setup_install_image_config_invalid_template(self):
self.isolinux.get_install_message_template.side_effect = Exception
self.bootloader.setup_install_image_config(mbrid=None)
@patch('kiwi.bootloader.config.isolinux.DataSync')
def test_setup_install_boot_images(self, mock_sync):
data = mock.Mock()
mock_sync.return_value = data
self.bootloader.setup_install_boot_images(
mbrid=None, lookup_path='lookup_dir'
)
mock_sync.assert_called_once_with(
'lookup_dir/image/loader/',
'root_dir/boot/x86_64/loader'
)
data.sync_data.assert_called_once_with(
options=['-z', '-a']
)
@patch('kiwi.bootloader.config.isolinux.DataSync')
def test_setup_live_boot_images(self, mock_sync):
data = mock.Mock()
mock_sync.return_value = data
self.bootloader.setup_live_boot_images(
mbrid=None
)
mock_sync.assert_called_once_with(
'root_dir/image/loader/',
'root_dir/boot/x86_64/loader'
)
data.sync_data.assert_called_once_with(
options=['-z', '-a']
)
@raises(KiwiTemplateError)
def test_setup_live_image_config_invalid_template(self):
self.isolinux.get_message_template.side_effect = Exception
self.bootloader.setup_live_image_config(mbrid=None)
def test_setup_live_image_config(self):
template_cfg = mock.Mock()
template_msg = mock.Mock()
self.isolinux.get_template.return_value = template_cfg
self.isolinux.get_message_template.return_value = template_msg
self.bootloader.setup_live_image_config(mbrid=None)
self.isolinux.get_template.assert_called_once_with(
True, False, None
)
self.isolinux.get_message_template.assert_called_once_with()
assert template_cfg.substitute.called
assert template_msg.substitute.called
def test_setup_live_image_config_multiboot(self):
self.bootloader.multiboot = True
self.bootloader.setup_live_image_config(mbrid=None)
self.isolinux.get_multiboot_template.assert_called_once_with(
True, False, None
)