kiwi-el8/test/unit/volume_manager_base_test.py
Marcus Schäfer 09daca60c0
KIWI - appliance builder next generation
a rewrite of the current kiwi from https://github.com/openSUSE/kiwi
2015-12-05 16:17:10 +01:00

139 lines
4.6 KiB
Python

from nose.tools import *
from mock import patch
import mock
import nose_helper
from collections import namedtuple
from kiwi.exceptions import *
from kiwi.volume_manager_base import VolumeManagerBase
class TestVolumeManagerBase(object):
@patch('os.path.exists')
def setup(self, mock_path):
self.volume_type = namedtuple(
'volume_type', [
'name',
'size',
'realpath',
'mountpoint',
'fullsize'
]
)
mock_path.return_value = True
self.device_provider = mock.Mock()
self.device_provider.is_loop = mock.Mock(
return_value=True
)
self.device_provider.get_device = mock.Mock(
return_value='/dev/storage'
)
self.volume_manager = VolumeManagerBase(
self.device_provider, 'source_dir', mock.Mock()
)
@raises(KiwiVolumeManagerSetupError)
def test_source_dir_does_not_exist(self):
VolumeManagerBase(mock.Mock(), 'source_dir', mock.Mock())
def test_is_loop(self):
assert self.volume_manager.is_loop() == \
self.device_provider.is_loop()
def test_get_device(self):
assert self.volume_manager.get_device() == \
self.device_provider.get_device()
@raises(NotImplementedError)
def test_setup(self):
self.volume_manager.setup()
@raises(NotImplementedError)
def test_create_volumes(self):
self.volume_manager.create_volumes('ext3')
@patch('kiwi.volume_manager_base.Path.create')
@patch('os.path.exists')
def test_create_volume_paths_in_source_dir(self, mock_os_path, mock_path):
mock_os_path.return_value = False
self.volume_manager.volumes = [
self.volume_type(
name='LVetc', size='freespace:200', realpath='/etc',
mountpoint='/etc', fullsize=False
)
]
self.volume_manager.create_volume_paths_in_source_dir()
mock_path.assert_called_once_with('source_dir//etc')
def test_get_canonical_volume_list(self):
self.volume_manager.volumes = [
self.volume_type(
name='LVetc', size='freespace:200', realpath='/etc',
mountpoint='/etc', fullsize=False
),
self.volume_type(
name='LVRoot', size='size:500', realpath='/',
mountpoint='/', fullsize=True
)
]
volume_list = self.volume_manager.get_canonical_volume_list()
assert volume_list.volumes[0].name == 'LVetc'
assert volume_list.full_size_volume.name == 'LVRoot'
@patch('kiwi.volume_manager_base.SystemSize')
def test_get_volume_mbsize(self, mock_size):
size = mock.Mock()
size.customize = mock.Mock(
return_value=42
)
mock_size.return_value = size
assert self.volume_manager.get_volume_mbsize(
100, 'freespace', '/foo', 'ext3'
) == 172
@raises(NotImplementedError)
def test_mount_volumes(self):
self.volume_manager.mount_volumes()
@patch('kiwi.volume_manager_base.Command.run')
def test_is_mounted_true(self, mock_command):
self.volume_manager.mountpoint = 'mountpoint'
assert self.volume_manager.is_mounted() == True
mock_command.assert_called_once_with(
['mountpoint', 'mountpoint']
)
@patch('kiwi.volume_manager_base.Command.run')
def test_is_mounted_false(self, mock_command):
mock_command.side_effect = Exception
self.volume_manager.mountpoint = 'mountpoint'
assert self.volume_manager.is_mounted() == False
mock_command.assert_called_once_with(
['mountpoint', 'mountpoint']
)
@patch('kiwi.volume_manager_base.DataSync')
@patch('kiwi.volume_manager_base.VolumeManagerBase.is_mounted')
def test_sync_data(self, mock_mounted, mock_sync):
data_sync = mock.Mock()
mock_sync.return_value = data_sync
mock_mounted.return_value = True
self.volume_manager.mountpoint = 'mountpoint'
self.volume_manager.sync_data(['exclude_me'])
mock_sync.assert_called_once_with(
'source_dir', 'mountpoint'
)
data_sync.sync_data.assert_called_once_with(['exclude_me'])
@patch('kiwi.volume_manager_base.mkdtemp')
def test_setup_mountpoint(self, mock_mkdtemp):
mock_mkdtemp.return_value = 'tmpdir'
self.volume_manager.setup_mountpoint()
assert self.volume_manager.mountpoint == 'tmpdir'
def test_destructor(self):
# does nothing by default, just pass
self.volume_manager.__del__()