kiwi-el8/test/unit/builder_pxe_test.py
Marcus Schäfer e6cc5bfa09 Move from nose to pytest
nose is no longer maintained, thus we have to move to another
testing system. This commit updates the tox setup and all tests
to use pytest instead of nose.
2016-03-14 12:23:14 +01:00

105 lines
3.5 KiB
Python

from mock import patch
import mock
import kiwi
from .test_helper import *
from collections import namedtuple
from kiwi.exceptions import *
from kiwi.builder.pxe import PxeBuilder
class TestPxeBuilder(object):
@patch('kiwi.builder.pxe.FileSystemBuilder')
@patch('kiwi.builder.pxe.BootImage')
def setup(self, mock_boot, mock_filesystem):
self.setup = mock.Mock()
kiwi.builder.pxe.SystemSetup = mock.Mock(
return_value=self.setup
)
self.boot_image_task = mock.MagicMock()
self.boot_image_task.boot_root_directory = 'initrd_dir'
mock_boot.return_value = self.boot_image_task
self.filesystem = mock.MagicMock()
self.filesystem.filename = 'myimage'
mock_filesystem.return_value = self.filesystem
self.xml_state = mock.Mock()
self.xml_state.get_image_version = mock.Mock(
return_value='1.2.3'
)
self.xml_state.xml_data.get_name = mock.Mock(
return_value='some-image'
)
kernel_type = namedtuple(
'kernel', ['filename', 'version']
)
xen_type = namedtuple(
'xen', ['filename', 'name']
)
self.kernel = mock.Mock()
self.kernel.get_kernel = mock.Mock(
return_value=kernel_type(filename='some-kernel', version='42')
)
self.kernel.get_xen_hypervisor = mock.Mock(
return_value=xen_type(filename='hypervisor', name='xen.gz')
)
kiwi.builder.pxe.Kernel = mock.Mock(
return_value=self.kernel
)
self.pxe = PxeBuilder(
self.xml_state, 'target_dir', 'root_dir'
)
self.machine = mock.Mock()
self.machine.get_domain = mock.Mock(
return_value='dom0'
)
self.pxe.machine = self.machine
self.pxe.image_name = 'myimage'
@patch('kiwi.builder.pxe.Checksum')
@patch('kiwi.builder.pxe.Compress')
@patch('kiwi.logger.log.warning')
def test_create(self, mock_log_warn, mock_compress, mock_checksum):
compress = mock.Mock()
mock_compress.return_value = compress
checksum = mock.Mock()
mock_checksum.return_value = checksum
self.boot_image_task.required = mock.Mock(
return_value=True
)
self.pxe.create()
self.filesystem.create.assert_called_once_with()
compress.xz.assert_called_once_with()
checksum.md5.assert_called_once_with('myimage.md5')
self.boot_image_task.prepare.assert_called_once_with()
self.setup.export_modprobe_setup.assert_called_once_with(
'initrd_dir'
)
self.boot_image_task.create_initrd.assert_called_once_with()
self.setup.export_rpm_package_list.assert_called_once_with(
'target_dir'
)
self.setup.export_rpm_package_verification.assert_called_once_with(
'target_dir'
)
# warning for not implemented pxedeploy handling
assert mock_log_warn.called
@patch('kiwi.builder.pxe.Checksum')
@patch('kiwi.builder.pxe.Compress')
@raises(KiwiPxeBootImageError)
def test_create_no_kernel_found(self, mock_compress, mock_checksum):
self.kernel.get_kernel.return_value = False
self.pxe.create()
@patch('kiwi.builder.pxe.Checksum')
@patch('kiwi.builder.pxe.Compress')
@raises(KiwiPxeBootImageError)
def test_create_no_hypervisor_found(self, mock_compress, mock_checksum):
self.kernel.get_xen_hypervisor.return_value = False
self.pxe.create()