oct method returns a string representation which was mistakenly used in a subsequent os.chmod call. This Fixes #564
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import os
|
|
from stat import ST_MODE
|
|
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', mock_stat.return_value[ST_MODE]
|
|
)
|
|
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
|