kiwi-el8/test/unit/firmware_test.py
Marcus Schäfer 08d39049bc Added support for virtual boot partition on arm
Triggered by the firmware="vboot" setup an EFI setup plus a
raw partition without filesystem is created as first partition.
The size of the partition can be controlled by the vbootsize
attribute. The vboot feature is used by the arm architecture
to provide a space in the partition table for custom code as
required by e.g the chromebook. The final customization of the
vboot space is board specific and can't be implemented in a
generic way in kiwi. For finalizing the vboot space the script
hooks editbootconfig and editbootinstall can be used
This is related to Issue #17
2016-03-22 16:20:51 +01:00

121 lines
4.5 KiB
Python

from mock import patch
import mock
from .test_helper import *
from kiwi.exceptions import *
from kiwi.firmware import FirmWare
class TestFirmWare(object):
@patch('platform.machine')
def setup(self, mock_platform):
mock_platform.return_value = 'x86_64'
xml_state = mock.Mock()
xml_state.build_type.get_firmware = mock.Mock()
xml_state.build_type.get_firmware.return_value = 'bios'
self.firmware_bios = FirmWare(xml_state)
xml_state.build_type.get_firmware.return_value = 'efi'
self.firmware_efi = FirmWare(xml_state)
xml_state.build_type.get_firmware.return_value = 'ec2'
self.firmware_ec2 = FirmWare(xml_state)
mock_platform.return_value = 's390x'
xml_state.build_type.get_firmware.return_value = None
xml_state.build_type.get_zipl_targettype = mock.Mock()
xml_state.build_type.get_zipl_targettype.return_value = 'LDL'
self.firmware_s390_ldl = FirmWare(xml_state)
xml_state.build_type.get_zipl_targettype.return_value = 'CDL'
self.firmware_s390_cdl = FirmWare(xml_state)
xml_state.build_type.get_zipl_targettype.return_value = 'SCSI'
self.firmware_s390_scsi = FirmWare(xml_state)
mock_platform.return_value = 'ppc64le'
xml_state.build_type.get_firmware.return_value = 'ofw'
self.firmware_ofw = FirmWare(xml_state)
xml_state.build_type.get_firmware.return_value = 'opal'
self.firmware_opal = FirmWare(xml_state)
mock_platform.return_value = 'arm64'
xml_state.build_type.get_firmware.return_value = 'vboot'
xml_state.build_type.get_vbootsize.return_value = None
self.firmware_vboot = FirmWare(xml_state)
@raises(KiwiNotImplementedError)
def test_firmware_unsupported(self):
xml_state = mock.Mock()
xml_state.build_type.get_firmware = mock.Mock(
return_value='bogus'
)
FirmWare(xml_state)
def test_get_partition_table_type(self):
assert self.firmware_bios.get_partition_table_type() == 'msdos'
assert self.firmware_efi.get_partition_table_type() == 'gpt'
assert self.firmware_s390_ldl.get_partition_table_type() == 'dasd'
assert self.firmware_s390_cdl.get_partition_table_type() == 'dasd'
assert self.firmware_s390_scsi.get_partition_table_type() == 'msdos'
def test_get_partition_table_type_ppc_ofw_mode(self):
assert self.firmware_ofw.get_partition_table_type() == 'msdos'
def test_get_partition_table_type_ppc_opal_mode(self):
assert self.firmware_opal.get_partition_table_type() == 'gpt'
def test_get_partition_table_type_arm_vboot_move(self):
assert self.firmware_vboot.get_partition_table_type() == 'gpt'
def test_legacy_bios_mode(self):
assert self.firmware_bios.legacy_bios_mode() is False
assert self.firmware_efi.legacy_bios_mode() is True
def test_legacy_bios_mode_non_x86_platform(self):
self.firmware_efi.arch = 'arm64'
assert self.firmware_efi.legacy_bios_mode() is False
def test_vboot_mode(self):
assert self.firmware_vboot.vboot_mode() is True
assert self.firmware_bios.vboot_mode() is False
def test_ec2_mode(self):
assert self.firmware_ec2.ec2_mode() == 'ec2'
assert self.firmware_bios.ec2_mode() is None
def test_efi_mode(self):
assert self.firmware_bios.efi_mode() is None
assert self.firmware_efi.efi_mode() == 'efi'
def test_bios_mode(self):
assert self.firmware_bios.bios_mode() is True
assert self.firmware_efi.bios_mode() is False
def test_ofw_mode(self):
assert self.firmware_ofw.ofw_mode() is True
def test_opal_mode(self):
assert self.firmware_opal.opal_mode() is True
def test_get_legacy_bios_partition_size(self):
assert self.firmware_bios.get_legacy_bios_partition_size() == 0
assert self.firmware_efi.get_legacy_bios_partition_size() == 2
def test_get_efi_partition_size(self):
assert self.firmware_bios.get_efi_partition_size() == 0
assert self.firmware_efi.get_efi_partition_size() == 200
def test_get_prep_partition_size(self):
assert self.firmware_ofw.get_prep_partition_size() == 8
def test_get_vboot_partition_size(self):
assert self.firmware_vboot.get_vboot_partition_size() == 10
self.firmware_vboot.vboot_mbsize = 42
assert self.firmware_vboot.get_vboot_partition_size() == 42
assert self.firmware_bios.get_vboot_partition_size() == 0