For reproducible builds the calculation of the filesystem UUID should be persistent with each rebuild of the image. To achieve this the UUID is calculated using the SOURCE_DATE_EPOCH from the environment plus a char-number representation of the filesystem label name as random seed. In kiwi every filesystem is created with a label, thus only in case there is no SOURCE_DATE_EPOCH available we continue to create the UUID as random data. This Fixes #2761
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
from unittest.mock import (
|
|
patch, call
|
|
)
|
|
|
|
import unittest.mock as mock
|
|
|
|
from kiwi.filesystem.ext2 import FileSystemExt2
|
|
|
|
|
|
class TestFileSystemExt2:
|
|
@patch('os.path.exists')
|
|
def setup(self, mock_exists):
|
|
mock_exists.return_value = True
|
|
provider = mock.Mock()
|
|
provider.get_device = mock.Mock(
|
|
return_value='/dev/foo'
|
|
)
|
|
self.ext2 = FileSystemExt2(provider, 'root_dir')
|
|
self.ext2.setup_mountpoint = mock.Mock(
|
|
return_value='some-mount-point'
|
|
)
|
|
|
|
@patch('os.path.exists')
|
|
def setup_method(self, cls, mock_exists):
|
|
self.setup()
|
|
|
|
@patch('kiwi.filesystem.ext2.Command.run')
|
|
def test_create_on_device(self, mock_command):
|
|
with patch.dict('os.environ', {'SOURCE_DATE_EPOCH': '0'}):
|
|
self.ext2.create_on_device('label', 100, uuid='uuid')
|
|
call = mock_command.call_args_list[0]
|
|
assert mock_command.call_args_list[0] == \
|
|
call(['mkfs.ext2', '-L', 'label', '-U', 'uuid', '/dev/foo', '100'])
|
|
mock_command.reset_mock()
|
|
self.ext2.create_on_device('label', 100)
|
|
assert mock_command.call_args_list[0] == call(
|
|
[
|
|
'mkfs.ext2',
|
|
'-L', 'label',
|
|
'-U', '2453562e-7073-2098-d091-fd7a04dc5434',
|
|
'/dev/foo',
|
|
'100'
|
|
]
|
|
)
|
|
|
|
@patch('kiwi.filesystem.ext2.Command.run')
|
|
def test_set_uuid(self, mock_command):
|
|
self.ext2.set_uuid()
|
|
assert mock_command.call_args_list == [
|
|
call(['e2fsck', '-y', '-f', '/dev/foo'], raise_on_error=False),
|
|
call(['tune2fs', '-f', '-U', 'random', '/dev/foo'])
|
|
]
|