kiwi-el8/test/unit/filesystem/ext2_test.py
Marcus Schäfer 8038ccfbef
Seed filesystem UUIDs with SOURCE_DATE_EPOCH
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
2025-07-08 16:37:38 +02:00

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'])
]