kiwi-el8/test/unit/bootloader_install_grub2_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

67 lines
2.2 KiB
Python

from nose.tools import *
from mock import patch
from mock import call
import mock
import nose_helper
from kiwi.exceptions import *
from kiwi.bootloader_install_grub2 import BootLoaderInstallGrub2
class TestBootLoaderInstallGrub2(object):
def setup(self):
device_provider = mock.Mock()
device_provider.get_device = mock.Mock(
return_value='/dev/some-device'
)
self.bootloader = BootLoaderInstallGrub2(
'source_dir', device_provider
)
def test_post_init(self):
self.bootloader.post_init()
assert self.bootloader.temporary_boot_dir is None
@patch('__builtin__.open')
@patch('kiwi.bootloader_install_grub2.Command.run')
@patch('kiwi.bootloader_install_grub2.mkdtemp')
@patch('kiwi.bootloader_install_grub2.NamedTemporaryFile')
def test_install(self, mock_tmpfile, mock_mkdtemp, mock_command, mock_open):
mock_mkdtemp.return_value = 'tmpdir'
tmpfile = mock.Mock()
tmpfile.name = 'tmpfile'
mock_tmpfile.return_value = tmpfile
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.bootloader.install()
mock_open.assert_called_once_with('tmpfile', 'w')
file_mock.write.assert_called_once_with(
'(hd0) /dev/some-device\n'
)
assert mock_command.call_args_list == [
call(['cp', '-a', 'source_dir/boot/', 'tmpdir']),
call([
'grub2-bios-setup', '-f',
'-d', 'tmpdir/boot/grub2/i386-pc',
'-m', 'tmpfile',
'/dev/some-device'
])
]
@patch('kiwi.bootloader_install_grub2.Path.wipe')
def test_desstructor(self, mock_wipe):
self.bootloader.temporary_boot_dir = 'tmpdir'
self.bootloader.__del__()
mock_wipe.assert_called_once_with('tmpdir')
self.bootloader.temporary_boot_dir = None