kiwi-el8/test/unit/storage_subformat_vagrant_libvirt_test.py
Marcus Schäfer c1534a3563
Update vagrant libvirt unit test
Take extra config from DiskFormatVagrantLibVirt as base for the
test and don't mock that information as it was done before
in the base class
2019-02-22 16:01:16 +01:00

90 lines
3.1 KiB
Python

import io
from textwrap import dedent
from mock import (
patch, Mock, MagicMock, call
)
from .test_helper import patch_open
from kiwi.storage.subformat.vagrant_libvirt import DiskFormatVagrantLibVirt
class TestDiskFormatVagrantLibVirt(object):
def setup(self):
xml_data = Mock()
xml_data.get_name = Mock(
return_value='some-disk-image'
)
self.xml_state = Mock()
self.xml_state.xml_data = xml_data
self.xml_state.get_image_version = Mock(
return_value='1.2.3'
)
self.vagrantconfig = Mock()
self.vagrantconfig.get_virtualsize = Mock(
return_value=42
)
self.disk_format = DiskFormatVagrantLibVirt(
self.xml_state, 'root_dir', 'target_dir',
{'vagrantconfig': self.vagrantconfig}
)
assert self.disk_format.image_format == 'vagrant.libvirt.box'
assert self.disk_format.provider == 'libvirt'
@patch('kiwi.storage.subformat.vagrant_libvirt.Command.run')
@patch('kiwi.storage.subformat.vagrant_libvirt.DiskFormatQcow2')
def test_create_box_img(
self, mock_qcow, mock_command
):
qcow = Mock()
qcow.image_format = 'qcow2'
mock_qcow.return_value = qcow
assert self.disk_format.create_box_img('tmpdir') == [
'tmpdir/box.img'
]
qcow.create_image_format.assert_called_once_with()
mock_command.assert_called_once_with(
[
'mv', 'target_dir/some-disk-image.x86_64-1.2.3.qcow2',
'tmpdir/box.img'
]
)
def test_get_additional_metadata(self):
assert self.disk_format.get_additional_metadata() == {
'format': 'qcow2', 'virtual_size': '42'
}
def test_get_additional_vagrant_config_settings(self):
assert self.disk_format.get_additional_vagrant_config_settings() == \
dedent('''
config.vm.provider :libvirt do |libvirt|
libvirt.driver = "kvm"
end
''').strip()
@patch('kiwi.storage.subformat.vagrant_base.Command.run')
@patch('kiwi.storage.subformat.vagrant_base.mkdtemp')
@patch('kiwi.storage.subformat.vagrant_base.random.randrange')
@patch.object(DiskFormatVagrantLibVirt, 'create_box_img')
@patch_open
def test_create_image_format(
self, mock_open, mock_create_box_img, mock_rand,
mock_mkdtemp, mock_command
):
mock_mkdtemp.return_value = 'tmpdir'
mock_create_box_img.return_value = ['arbitrary']
mock_open.return_value = MagicMock(spec=io.IOBase)
file_handle = mock_open.return_value.__enter__.return_value
self.disk_format.create_image_format()
assert file_handle.write.call_args_list[1] == call(
dedent('''
Vagrant.configure("2") do |config|
config.vm.base_mac = "00163E010101"
config.vm.provider :libvirt do |libvirt|
libvirt.driver = "kvm"
end
end
''').strip()
)