Installing the same image to different storage disks on the same machine creates device conflicts with unexpected side effects. This commit adds a validation based on the PTUUID of the disk image to check if another device on the system has the same ID and if yes, does not allow to install the image again including a message which device takes the same identifier. This references bsc#1228741
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
from unittest.mock import (
|
|
Mock, patch
|
|
)
|
|
|
|
from kiwi.utils.block import BlockID
|
|
|
|
|
|
class TestBlockID:
|
|
def setup(self):
|
|
self.blkid = BlockID('device')
|
|
|
|
def setup_method(self, cls):
|
|
self.setup()
|
|
|
|
@patch('kiwi.utils.block.Command.run')
|
|
def test_setup_with_uuid_format(self, mock_command):
|
|
BlockID('UUID=uuid')
|
|
mock_command.assert_called_once_with(
|
|
['blkid', '--uuid', 'uuid']
|
|
)
|
|
|
|
@patch('kiwi.utils.block.Command.run')
|
|
def test_get_blkid(self, mock_command):
|
|
self.blkid.get_blkid('LABEL')
|
|
mock_command.assert_called_once_with(
|
|
['blkid', 'device', '-s', 'LABEL', '-o', 'value'],
|
|
raise_on_error=False
|
|
)
|
|
|
|
@patch('kiwi.utils.block.BlockID.get_blkid')
|
|
def test_get_filesystem(self, mock_get_blkid):
|
|
self.blkid.get_filesystem()
|
|
mock_get_blkid.assert_called_once_with('TYPE')
|
|
|
|
@patch('kiwi.utils.block.BlockID.get_blkid')
|
|
def test_get_label(self, mock_get_blkid):
|
|
self.blkid.get_label()
|
|
mock_get_blkid.assert_called_once_with('LABEL')
|
|
|
|
@patch('kiwi.utils.block.BlockID.get_blkid')
|
|
def test_get_uuid(self, mock_get_blkid):
|
|
self.blkid.get_uuid()
|
|
mock_get_blkid.assert_called_once_with('UUID')
|
|
|
|
@patch('kiwi.utils.block.BlockID.get_blkid')
|
|
def test_get_ptuuid(self, mock_get_blkid):
|
|
self.blkid.get_ptuuid()
|
|
mock_get_blkid.assert_called_once_with('PTUUID')
|
|
|
|
@patch('kiwi.utils.block.Command.run')
|
|
def test_get_partition_count(self, mock_Command_run):
|
|
lsblk_call = Mock()
|
|
lsblk_call.output = "NAME TYPE\nsda disk\nsda4 part \nsda3 part"
|
|
mock_Command_run.return_value = lsblk_call
|
|
assert self.blkid.get_partition_count() == 2
|