The patch is two fold, first it fixes the name of the raw disk when it is copied as disk.raw. Second it fixes the content list of the tarball to be dynamicly build instead of a static allocation. Reason for this change is that the list of files depends on the XML description whether or not a gce disk tag is configured. Fixes #113
77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
|
|
from mock import patch
|
|
from mock import call
|
|
import mock
|
|
|
|
from .test_helper import *
|
|
|
|
from kiwi.exceptions import *
|
|
from kiwi.storage.subformat.gce import DiskFormatGce
|
|
|
|
|
|
class TestDiskFormatGce(object):
|
|
def setup(self):
|
|
xml_data = mock.Mock()
|
|
xml_data.get_name = mock.Mock(
|
|
return_value='some-disk-image'
|
|
)
|
|
self.xml_state = mock.Mock()
|
|
self.xml_state.xml_data = xml_data
|
|
self.xml_state.get_distribution_name_from_boot_attribute = mock.Mock(
|
|
return_value='distribution'
|
|
)
|
|
self.xml_state.get_image_version = mock.Mock(
|
|
return_value='0.8.15'
|
|
)
|
|
self.disk_format = DiskFormatGce(
|
|
self.xml_state, 'root_dir', 'target_dir'
|
|
)
|
|
|
|
def test_post_init(self):
|
|
self.disk_format.post_init({'option': 'value', '--tag': 'tag'})
|
|
assert self.disk_format.tag == 'tag'
|
|
|
|
@patch('kiwi.storage.subformat.gce.Command.run')
|
|
@patch('kiwi.storage.subformat.gce.ArchiveTar')
|
|
@patch_open
|
|
@patch('kiwi.storage.subformat.gce.mkdtemp')
|
|
def test_create_image_format(
|
|
self, mock_mkdtemp, mock_open, mock_archive, mock_command
|
|
):
|
|
mock_mkdtemp.return_value = 'tmpdir'
|
|
archive = mock.Mock()
|
|
mock_archive.return_value = archive
|
|
self.disk_format.tag = 'gce-license'
|
|
context_manager_mock = mock.Mock()
|
|
mock_open.return_value = context_manager_mock
|
|
file_mock = mock.Mock()
|
|
enter_mock = mock.Mock()
|
|
exit_mock = mock.Mock()
|
|
enter_mock.return_value = file_mock
|
|
setattr(context_manager_mock, '__enter__', enter_mock)
|
|
setattr(context_manager_mock, '__exit__', exit_mock)
|
|
|
|
self.disk_format.create_image_format()
|
|
|
|
mock_command.assert_called_once_with(
|
|
[
|
|
'cp', 'target_dir/some-disk-image.x86_64-0.8.15.raw',
|
|
'tmpdir/disk.raw'
|
|
]
|
|
)
|
|
assert mock_open.call_args_list == [
|
|
call('tmpdir/manifest.json', 'w')
|
|
]
|
|
assert file_mock.write.call_args_list == [
|
|
call('{"licenses": ["gce-license"]}')
|
|
]
|
|
mock_archive.assert_called_once_with(
|
|
filename='target_dir/distribution-guest-gce-0.8.15.tar',
|
|
file_list=['disk.raw', 'manifest.json']
|
|
)
|
|
archive.create_gnu_gzip_compressed.assert_called_once_with(
|
|
'tmpdir'
|
|
)
|
|
assert self.disk_format.get_target_name_for_format('gce') == \
|
|
'distribution-guest-gce-0.8.15.tar.gz'
|