kiwi-el8/test/unit/storage_subformat_test.py
Dan Čermák 2b17684d2c
Add support to build vagrant boxes with the Virtualbox provider
This commits adds initial support to build Vagrant boxes with the Virtualbox
provider.
- The attribute 'provider' of the option <vagrantconfig> now supports the option
  "virtualbox".
- A new boolean attribute 'virtualbox_guest_additions_present' was added to
  <vagrantconfig>. When set to true, KIWI will assume that guest additions have
  been installed into the base image and configure the shared folders to use
  vboxfs, otherwise rsync will be used.

This fixes #532 (https://github.com/SUSE/kiwi/issues/532).
2019-03-05 15:33:18 +01:00

145 lines
5.2 KiB
Python

from mock import patch
import mock
from .test_helper import raises
from kiwi.exceptions import KiwiDiskFormatSetupError
from kiwi.storage.subformat import DiskFormat
class TestDiskFormat(object):
def setup(self):
self.xml_state = mock.Mock()
self.xml_state.get_build_type_format_options.return_value = {}
@raises(KiwiDiskFormatSetupError)
def test_format_not_implemented(self):
DiskFormat('foo', self.xml_state, 'root_dir', 'target_dir')
@raises(KiwiDiskFormatSetupError)
def test_disk_format_vagrant_not_implemented(self):
self.xml_state.get_build_type_vagrant_config_section = mock.Mock(
return_value=None
)
DiskFormat(
'vagrant', self.xml_state, 'root_dir', 'target_dir'
)
@patch('kiwi.storage.subformat.DiskFormatQcow2')
def test_disk_format_qcow2(self, mock_qcow2):
DiskFormat('qcow2', self.xml_state, 'root_dir', 'target_dir')
mock_qcow2.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir', {}
)
@patch('kiwi.storage.subformat.DiskFormatVdi')
def test_disk_format_vdi(self, mock_vdi):
DiskFormat('vdi', self.xml_state, 'root_dir', 'target_dir')
mock_vdi.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir', {}
)
@patch('kiwi.storage.subformat.DiskFormatVhd')
def test_disk_format_vhd(self, mock_vhd):
DiskFormat('vhd', self.xml_state, 'root_dir', 'target_dir')
mock_vhd.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir', {}
)
@patch('kiwi.storage.subformat.DiskFormatVhdx')
def test_disk_format_vhdx(self, mock_vhdx):
DiskFormat('vhdx', self.xml_state, 'root_dir', 'target_dir')
mock_vhdx.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir', {}
)
@patch('kiwi.storage.subformat.DiskFormatVhdFixed')
def test_disk_format_vhdfixed(self, mock_vhdfixed):
self.xml_state.build_type.get_vhdfixedtag = mock.Mock(
return_value='disk-tag'
)
DiskFormat('vhd-fixed', self.xml_state, 'root_dir', 'target_dir')
mock_vhdfixed.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir', {'--tag': 'disk-tag'}
)
@patch('kiwi.storage.subformat.DiskFormatGce')
def test_disk_format_gce(self, mock_gce):
self.xml_state.build_type.get_gcelicense = mock.Mock(
return_value='gce_license_tag'
)
DiskFormat('gce', self.xml_state, 'root_dir', 'target_dir')
mock_gce.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir',
{'--tag': 'gce_license_tag'}
)
@patch('kiwi.storage.subformat.DiskFormatVmdk')
def test_disk_format_vmdk(self, mock_vmdk):
vmdisk = mock.Mock()
vmdisk.get_controller = mock.Mock(
return_value='controller'
)
vmdisk.get_diskmode = mock.Mock(
return_value='disk-mode'
)
self.xml_state.get_build_type_vmdisk_section = mock.Mock(
return_value=vmdisk
)
DiskFormat('vmdk', self.xml_state, 'root_dir', 'target_dir')
mock_vmdk.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir',
{'adapter_type=controller': None, 'subformat=disk-mode': None}
)
@patch('kiwi.storage.subformat.DiskFormatOva')
def test_disk_format_ova(self, mock_ova):
vmdisk = mock.Mock()
vmdisk.get_controller = mock.Mock(
return_value='controller'
)
vmdisk.get_diskmode = mock.Mock(
return_value='disk-mode'
)
self.xml_state.get_build_type_vmdisk_section = mock.Mock(
return_value=vmdisk
)
DiskFormat('ova', self.xml_state, 'root_dir', 'target_dir')
mock_ova.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir',
{'adapter_type=controller': None, 'subformat=disk-mode': None}
)
@patch('kiwi.storage.subformat.DiskFormatVagrantVirtualBox')
@patch('kiwi.storage.subformat.DiskFormatVagrantLibVirt')
def test_disk_format_vagrant_libvirt(
self, mock_vagrant_libvirt, mock_vagrant_virt_box
):
for provider_name, provider_mock in (
('libvirt', mock_vagrant_libvirt),
('virtualbox', mock_vagrant_virt_box)
):
vagrant_config = mock.Mock()
vagrant_config.get_provider = mock.Mock(
return_value=provider_name
)
self.xml_state.get_build_type_vagrant_config_section = mock.Mock(
return_value=vagrant_config
)
DiskFormat(
'vagrant', self.xml_state, 'root_dir', 'target_dir'
)
provider_mock.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir',
{'vagrantconfig': vagrant_config}
)
@patch('kiwi.storage.subformat.DiskFormatBase')
def test_disk_format_base(self, mock_base):
DiskFormat('raw', self.xml_state, 'root_dir', 'target_dir')
mock_base.assert_called_once_with(
self.xml_state, 'root_dir', 'target_dir', {}
)