kiwi-el8/test/unit/container_setup_base_test.py
Marcus Schäfer e6cc5bfa09 Move from nose to pytest
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.
2016-03-14 12:23:14 +01:00

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()