This commit refactors the use of Path.which in several parts of the
code. Since dd4d2ed78 the Path utility is capable to run Path.which
on certain chroot env, thus no need to adapt the PATH environment
variable.
Fixes #1281
147 lines
5.2 KiB
Python
147 lines
5.2 KiB
Python
from mock import (
|
|
patch, Mock, call
|
|
)
|
|
|
|
from kiwi.utils.rpm_database import RpmDataBase
|
|
|
|
|
|
class TestRpmDataBase:
|
|
def setup(self):
|
|
self.rpmdb = RpmDataBase('root_dir')
|
|
self.rpmdb.rpmdb_host = Mock()
|
|
self.rpmdb.rpmdb_image = Mock()
|
|
|
|
@patch('kiwi.utils.rpm_database.Path.which')
|
|
def test_has_rpm(self, mock_Path_which):
|
|
mock_Path_which.return_value = None
|
|
assert self.rpmdb.has_rpm() is False
|
|
mock_Path_which.assert_called_once_with(
|
|
'rpmdb', access_mode=1, root_dir='root_dir'
|
|
)
|
|
mock_Path_which.return_value = 'rpm'
|
|
assert self.rpmdb.has_rpm() is True
|
|
|
|
@patch('kiwi.command.Command.run')
|
|
def test_rebuild_database(self, mock_Command_run):
|
|
self.rpmdb.rebuild_database()
|
|
mock_Command_run.assert_called_once_with(
|
|
['chroot', 'root_dir', 'rpmdb', '--rebuilddb']
|
|
)
|
|
|
|
@patch('kiwi.command.Command.run')
|
|
def test_init_database(self, mock_Command_run):
|
|
self.rpmdb.init_database()
|
|
mock_Command_run.assert_called_once_with(
|
|
['rpm', '--root', 'root_dir', '--initdb']
|
|
)
|
|
|
|
def test_set_database_to_host_path(self):
|
|
self.rpmdb.set_database_to_host_path()
|
|
self.rpmdb.rpmdb_image.set_config_value.assert_called_once_with(
|
|
'_dbpath', self.rpmdb.rpmdb_host.get_query.return_value
|
|
)
|
|
self.rpmdb.rpmdb_image.write_config.assert_called_once_with()
|
|
self.rpmdb.rpmdb_host.get_query.assert_called_once_with('_dbpath')
|
|
|
|
@patch('kiwi.command.Command.run')
|
|
@patch('os.path.exists')
|
|
def test_link_database_to_host_path(self, mock_exists, mock_Command_run):
|
|
self.rpmdb.rpmdb_image.expand_query.return_value = \
|
|
'/var/lib/rpm'
|
|
self.rpmdb.rpmdb_host.expand_query.return_value = \
|
|
'/usr/lib/sysimage/rpm'
|
|
mock_exists.return_value = False
|
|
self.rpmdb.link_database_to_host_path()
|
|
assert mock_Command_run.call_args_list == [
|
|
call(['mkdir', '-p', 'root_dir/usr/lib/sysimage']),
|
|
call(
|
|
[
|
|
'ln', '-s', '../../../var/lib/rpm',
|
|
'root_dir/usr/lib/sysimage/rpm'
|
|
]
|
|
)
|
|
]
|
|
|
|
@patch('kiwi.utils.rpm_database.Path.wipe')
|
|
@patch('kiwi.command.Command.run')
|
|
@patch('os.path.islink')
|
|
@patch('os.path.exists')
|
|
@patch('os.unlink')
|
|
def test_set_database_to_image_path(
|
|
self, mock_os_unlink, mock_os_exists, mock_os_islink,
|
|
mock_Command_run, mock_Path_wipe
|
|
):
|
|
mock_os_exists.return_value = True
|
|
|
|
link = [False, False]
|
|
|
|
def mocked_islink(path):
|
|
return link.pop()
|
|
|
|
mock_os_islink.side_effect = mocked_islink
|
|
self.rpmdb.rpmdb_image.expand_query.return_value = \
|
|
'/var/lib/rpm'
|
|
self.rpmdb.rpmdb_host.expand_query.return_value = \
|
|
'/usr/lib/sysimage/rpm'
|
|
self.rpmdb.set_database_to_image_path()
|
|
self.rpmdb.rpmdb_image.expand_query.assert_called_once_with('%_dbpath')
|
|
assert self.rpmdb.rpmdb_image.set_config_value.call_args_list == [
|
|
call(
|
|
'_dbpath', self.rpmdb.rpmdb_host.expand_query.return_value
|
|
),
|
|
call(
|
|
'_dbpath_rebuild', self.rpmdb.rpmdb_image.get_query.return_value
|
|
)
|
|
]
|
|
assert mock_Path_wipe.call_args_list == [
|
|
call('root_dir/var/lib/rpm'),
|
|
call('root_dir/usr/lib/sysimage/rpm')
|
|
]
|
|
self.rpmdb.rpmdb_image.write_config.assert_called_once_with()
|
|
assert mock_Command_run.call_args_list == [
|
|
call(
|
|
[
|
|
'chroot', 'root_dir', 'rpmdb', '--rebuilddb'
|
|
]
|
|
),
|
|
call(
|
|
[
|
|
'mv', 'root_dir/usr/lib/sysimage/rpm/alternatives',
|
|
'root_dir/var/lib/rpm'
|
|
]
|
|
)
|
|
]
|
|
assert self.rpmdb.rpmdb_image.wipe_config.call_count == 2
|
|
link = [True, False]
|
|
mock_os_islink.side_effect = mocked_islink
|
|
self.rpmdb.set_database_to_image_path()
|
|
mock_os_unlink.assert_called_once_with(
|
|
'root_dir/var/lib/rpm'
|
|
)
|
|
link = [True, True]
|
|
mock_os_islink.side_effect = mocked_islink
|
|
self.rpmdb.set_database_to_image_path()
|
|
assert mock_Command_run.call_args_list[-1] == call(
|
|
['chroot', 'root_dir', 'rpmdb', '--rebuilddb']
|
|
)
|
|
|
|
def test_set_macro_from_string(self):
|
|
self.rpmdb.set_macro_from_string('_install_langs%en_US:de_DE')
|
|
self.rpmdb.rpmdb_image.set_config_value.assert_called_once_with(
|
|
'_install_langs', 'en_US:de_DE'
|
|
)
|
|
|
|
def test_write_config(self):
|
|
self.rpmdb.write_config()
|
|
self.rpmdb.rpmdb_image.write_config.assert_called_once_with()
|
|
|
|
@patch('kiwi.command.Command.run')
|
|
def test_import_signing_key_to_image(self, mock_Command_run):
|
|
self.rpmdb.import_signing_key_to_image('key')
|
|
mock_Command_run.assert_called_once_with(
|
|
[
|
|
'rpm', '--root', 'root_dir', '--import', 'key',
|
|
'--dbpath', self.rpmdb.rpmdb_host.expand_query.return_value
|
|
]
|
|
)
|