nose is no longer maintained, thus we have to move to another testing system. This commit updates the tox setup and all tests to use pytest instead of nose.
130 lines
4.6 KiB
Python
130 lines
4.6 KiB
Python
|
|
from mock import patch
|
|
from mock import call
|
|
import mock
|
|
|
|
from .test_helper import *
|
|
|
|
from kiwi.exceptions import *
|
|
from kiwi.container.setup.base import ContainerSetupBase
|
|
|
|
|
|
class TestContainerSetupBase(object):
|
|
@patch('os.path.exists')
|
|
def setup(self, mock_exists):
|
|
mock_exists.return_value = True
|
|
self.context_manager_mock = mock.MagicMock()
|
|
self.file_mock = mock.MagicMock()
|
|
self.enter_mock = mock.MagicMock()
|
|
self.exit_mock = mock.MagicMock()
|
|
self.enter_mock.return_value = self.file_mock
|
|
setattr(self.context_manager_mock, '__enter__', self.enter_mock)
|
|
setattr(self.context_manager_mock, '__exit__', self.exit_mock)
|
|
|
|
self.container = ContainerSetupBase('root_dir')
|
|
|
|
@patch('os.path.exists')
|
|
@raises(KiwiContainerSetupError)
|
|
def test_container_root_dir_does_not_exist(self, mock_exists):
|
|
mock_exists.return_value = False
|
|
ContainerSetupBase('root_dir')
|
|
|
|
@raises(NotImplementedError)
|
|
def test_setup(self):
|
|
self.container.setup()
|
|
|
|
def test_post_init(self):
|
|
self.container.custom_args == {}
|
|
|
|
def test_get_container_name(self):
|
|
assert self.container.get_container_name() == 'systemContainer'
|
|
|
|
@patch('builtins.open')
|
|
def test_create_fstab(self, mock_open):
|
|
mock_open.return_value = self.context_manager_mock
|
|
self.container.create_fstab()
|
|
mock_open.assert_called_once_with(
|
|
'root_dir/etc/fstab', 'w'
|
|
)
|
|
assert self.file_mock.call_args_list == []
|
|
|
|
@patch('builtins.open')
|
|
@patch('os.path.exists')
|
|
def test_deactivate_bootloader_setup(self, mock_exists, mock_open):
|
|
mock_exists.return_value = True
|
|
mock_open.return_value = self.context_manager_mock
|
|
self.file_mock.read.return_value = 'LOADER_LOCATION="mylocation"'
|
|
self.container.deactivate_bootloader_setup()
|
|
assert mock_open.call_args_list[0] == call(
|
|
'root_dir/etc/sysconfig/bootloader', 'r'
|
|
)
|
|
assert self.file_mock.write.call_args_list == [
|
|
call('LOADER_LOCATION="none"\nLOADER_TYPE="none"\n')
|
|
]
|
|
|
|
@patch('builtins.open')
|
|
@patch('os.path.exists')
|
|
def test_deactivate_root_filesystem_check(self, mock_exists, mock_open):
|
|
mock_exists.return_value = True
|
|
mock_open.return_value = self.context_manager_mock
|
|
self.file_mock.read.return_value = None
|
|
self.container.deactivate_root_filesystem_check()
|
|
assert mock_open.call_args_list[0] == call(
|
|
'root_dir/etc/sysconfig/boot', 'r'
|
|
)
|
|
assert self.file_mock.write.call_args_list == [
|
|
call('ROOTFS_BLKDEV="/dev/null"\n')
|
|
]
|
|
|
|
@patch('os.path.exists')
|
|
@patch('kiwi.container.setup.base.Command.run')
|
|
def test_deactivate_systemd_service(self, mock_command, mock_exists):
|
|
mock_exists.return_value = True
|
|
self.container.deactivate_systemd_service('my.service')
|
|
mock_command.assert_called_once_with(
|
|
[
|
|
'ln', '-s', '-f', '/dev/null',
|
|
'root_dir/usr/lib/systemd/system/my.service'
|
|
]
|
|
)
|
|
|
|
@patch('os.path.exists')
|
|
@patch('kiwi.container.setup.base.Command.run')
|
|
@raises(KiwiContainerSetupError)
|
|
def test_deactivate_systemd_service_failed(self, mock_command, mock_exists):
|
|
mock_exists.return_value = True
|
|
mock_command.side_effect = Exception
|
|
self.container.deactivate_systemd_service('my.service')
|
|
|
|
@patch('builtins.open')
|
|
@patch('os.path.exists')
|
|
def test_setup_root_console(self, mock_exists, mock_open):
|
|
mock_exists.return_value = False
|
|
mock_open.return_value = self.context_manager_mock
|
|
self.file_mock.read.return_value = None
|
|
self.container.setup_root_console()
|
|
assert mock_open.call_args_list == [
|
|
call('root_dir/etc/securetty', 'w'),
|
|
call('root_dir/etc/securetty', 'r'),
|
|
call('root_dir/etc/securetty', 'w')
|
|
]
|
|
assert self.file_mock.write.call_args_list == [
|
|
call('console\n')
|
|
]
|
|
|
|
@patch('kiwi.container.setup.base.Command.run')
|
|
def test_setup_static_device_nodes(self, mock_command):
|
|
self.container.setup_static_device_nodes()
|
|
mock_command.assert_called_once_with(
|
|
[
|
|
'rsync', '-z', '-a', '-x', '--devices', '--specials',
|
|
'/dev/', 'root_dir/dev/'
|
|
]
|
|
)
|
|
|
|
@patch('kiwi.container.setup.base.Command.run')
|
|
@raises(KiwiContainerSetupError)
|
|
def test_setup_static_device_nodes_failed(self, mock_command):
|
|
mock_command.side_effect = Exception
|
|
self.container.setup_static_device_nodes()
|