kiwi-el8/test/unit/storage_loop_device_test.py
Marcus Schäfer d70d8d85cc
Fixed losetup call due to move in option names
util-linux dropped losetup-Add-support-for-setting-logical-blocksize.patch
because different implementations exists in the new kernel, and it has
a conflicting implementation in util-linux. This caused a change in the
option to specify the logical sector size. The option --logical-blocksize
was replaced by --sector-size. We adapt this now in kiwi too
2019-02-21 15:49:11 +01:00

67 lines
2.1 KiB
Python

from mock import patch
from .test_helper import raises
from kiwi.exceptions import KiwiLoopSetupError
from kiwi.storage.loop_device import LoopDevice
class TestLoopDevice(object):
@patch('os.path.exists')
def setup(self, mock_exists):
mock_exists.return_value = False
self.loop = LoopDevice('loop-file', 20, 4096)
@raises(KiwiLoopSetupError)
def test_loop_setup_invalid(self):
LoopDevice('loop-file-does-not-exist-and-no-size-given')
def test_get_device(self):
assert self.loop.get_device() is None
def test_is_loop(self):
assert self.loop.is_loop() is True
@patch('os.path.exists')
@patch('kiwi.storage.loop_device.Command.run')
@patch('kiwi.storage.loop_device.CommandCapabilities.has_option_in_help')
def test_create(
self, mock_has_option_in_help, mock_command, mock_exists
):
mock_has_option_in_help.return_value = True
mock_exists.return_value = False
self.loop.create()
call = mock_command.call_args_list[0]
assert mock_command.call_args_list[0] == \
call([
'qemu-img', 'create', 'loop-file', '20M'
])
call = mock_command.call_args_list[1]
assert mock_command.call_args_list[1] == \
call([
'losetup', '--sector-size', '4096',
'-f', '--show', 'loop-file'
])
mock_has_option_in_help.return_value = False
mock_command.reset_mock()
self.loop.create()
assert mock_command.call_args_list[1] == \
call([
'losetup', '--logical-blocksize', '4096',
'-f', '--show', 'loop-file'
])
self.loop.node_name = None
@patch('kiwi.storage.loop_device.Command.run')
@patch('kiwi.logger.log.warning')
def test_destructor(self, mock_log_warn, mock_command):
self.loop.node_name = '/dev/loop0'
mock_command.side_effect = Exception
self.loop.__del__()
mock_command.assert_called_once_with(
['losetup', '-d', '/dev/loop0']
)
assert mock_log_warn.called
self.loop.node_name = None