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

110 lines
3.7 KiB
Python

import sys
import mock
from mock import patch
from mock import call
import kiwi
from .test_helper import *
from kiwi.exceptions import *
from kiwi.tasks.result_bundle import ResultBundleTask
from kiwi.system.result import Result
class TestResultBundleTask(object):
def setup(self):
sys.argv = [
sys.argv[0], 'result', 'bundle', '--target-dir', 'target_dir',
'--bundle-dir', 'bundle_dir', '--id', 'Build_42'
]
self.context_manager_mock = mock.Mock()
self.file_mock = mock.Mock()
self.enter_mock = mock.Mock()
self.exit_mock = mock.Mock()
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.file_mock.read.return_value = b'data'
self.xml_state = mock.Mock()
self.xml_state.get_image_version = mock.Mock(
return_value='1.2.3'
)
self.result = Result(self.xml_state)
self.result.add(
key='keyname', filename='filename-1.2.3',
use_for_bundle=True, compress=True, shasum=True
)
kiwi.tasks.result_bundle.Help = mock.Mock(
return_value=mock.Mock()
)
self.task = ResultBundleTask()
def __init_command_args(self):
self.task.command_args = {}
self.task.command_args['help'] = False
self.task.command_args['bundle'] = False
self.task.command_args['--target-dir'] = 'target_dir'
self.task.command_args['--bundle-dir'] = 'bundle_dir'
self.task.command_args['--id'] = 'Build_42'
@raises(KiwiBundleError)
def test_process_invalid_bundle_directory(self):
self.__init_command_args()
self.task.command_args['--bundle-dir'] = \
self.task.command_args['--target-dir']
self.task.command_args['bundle'] = True
self.task.process()
@patch('kiwi.tasks.result_bundle.Result.load')
@patch('kiwi.tasks.result_bundle.Command.run')
@patch('kiwi.tasks.result_bundle.Path.create')
@patch('kiwi.tasks.result_bundle.Compress')
@patch('kiwi.tasks.result_bundle.Checksum')
@patch('os.path.exists')
@patch('builtins.open')
def test_process_result_bundle(
self, mock_open, mock_exists, mock_checksum, mock_compress,
mock_path, mock_command, mock_load
):
checksum = mock.Mock()
compress = mock.Mock()
compress.compressed_filename = 'compressed_filename'
mock_compress.return_value = compress
mock_checksum.return_value = checksum
mock_exists.return_value = False
mock_open.return_value = self.context_manager_mock
mock_load.return_value = self.result
self.__init_command_args()
self.task.command_args['bundle'] = True
self.task.process()
mock_load.assert_called_once_with('target_dir/kiwi.result')
mock_path.assert_called_once_with('bundle_dir')
mock_command.assert_called_once_with(
[
'cp', '-l', 'filename-1.2.3',
'bundle_dir/filename-1.2.3-Build_42'
]
)
mock_compress.assert_called_once_with(
'bundle_dir/filename-1.2.3-Build_42'
)
mock_checksum.assert_called_once_with(
compress.compressed_filename
)
checksum.sha256.assert_called_once_with()
def test_process_result_bundle_help(self):
self.__init_command_args()
self.task.command_args['help'] = True
self.task.command_args['bundle'] = True
self.task.process()
self.task.manual.show.assert_called_once_with(
'kiwi::result::bundle'
)