kiwi-el8/test/unit/utils_sync_test.py
Marcus Schäfer f17b6e41f0
Make sure toplevel target dir keeps permissions
When syncing data via rsync we make sure the toplevel target
directory the data gets synced to does not change it's origin
permissions. This Fixes #557
2017-12-04 17:17:35 +01:00

49 lines
1.6 KiB
Python

import os
from mock import patch
from kiwi.utils.sync import DataSync
class TestDataSync(object):
def setup(self):
self.sync = DataSync('source_dir', 'target_dir')
@patch('kiwi.utils.sync.Command.run')
@patch('kiwi.utils.sync.DataSync.target_supports_extended_attributes')
@patch('kiwi.logger.log.warning')
@patch('os.chmod')
@patch('os.stat')
def test_sync_data(
self, mock_stat, mock_chmod, mock_warn, mock_xattr_support, mock_command
):
mock_stat.return_value = os.stat('.')
mock_xattr_support.return_value = False
self.sync.sync_data(
options=['-a', '-H', '-X', '-A', '--one-file-system'],
exclude=['exclude_me']
)
mock_command.assert_called_once_with(
[
'rsync', '-a', '-H', '--one-file-system',
'--exclude', '/exclude_me', 'source_dir', 'target_dir'
]
)
mock_chmod.assert_called_once_with(
'target_dir', oct(mock_stat.return_value)
)
assert mock_warn.called
@patch('xattr.getxattr')
def test_target_supports_extended_attributes(self, mock_getxattr):
assert self.sync.target_supports_extended_attributes() is True
mock_getxattr.assert_called_once_with(
'target_dir', 'user.mime_type'
)
@patch('xattr.getxattr')
def test_target_does_not_support_extended_attributes(self, mock_getxattr):
mock_getxattr.side_effect = OSError(
"""[Errno 95] Operation not supported: b'/boot/efi"""
)
assert self.sync.target_supports_extended_attributes() is False