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.
105 lines
3.5 KiB
Python
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()
|