mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-06-20 17:06:30 +00:00

It seems that the codebase is not formatted with the latest ruff version. This PR reformats the codebase with ruff 0.5.7.
65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
"""Test plugin manager."""
|
|
|
|
from unittest.mock import PropertyMock, patch
|
|
|
|
from awesomeversion import AwesomeVersion
|
|
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.docker.interface import DockerInterface
|
|
from supervisor.plugins.base import PluginBase
|
|
from supervisor.supervisor import Supervisor
|
|
|
|
|
|
def mock_awaitable_bool(value: bool):
|
|
"""Return a mock of an awaitable bool."""
|
|
|
|
async def _mock_bool(*args, **kwargs) -> bool:
|
|
return value
|
|
|
|
return _mock_bool
|
|
|
|
|
|
async def test_repair(coresys: CoreSys):
|
|
"""Test repair."""
|
|
with patch.object(DockerInterface, "install") as install:
|
|
# If instance exists, repair does nothing
|
|
with patch.object(DockerInterface, "exists", new=mock_awaitable_bool(True)):
|
|
await coresys.plugins.repair()
|
|
|
|
install.assert_not_called()
|
|
|
|
# If not, repair installs the image
|
|
with patch.object(DockerInterface, "exists", new=mock_awaitable_bool(False)):
|
|
await coresys.plugins.repair()
|
|
|
|
assert install.call_count == len(coresys.plugins.all_plugins)
|
|
|
|
|
|
async def test_load(coresys: CoreSys):
|
|
"""Test plugin manager load."""
|
|
coresys.hardware.disk.get_disk_free_space = lambda x: 5000
|
|
await coresys.updater.load()
|
|
|
|
need_update = PropertyMock(return_value=True)
|
|
with (
|
|
patch.object(DockerInterface, "attach") as attach,
|
|
patch.object(DockerInterface, "update") as update,
|
|
patch.object(Supervisor, "need_update", new=need_update),
|
|
patch.object(PluginBase, "need_update", new=PropertyMock(return_value=True)),
|
|
patch.object(
|
|
PluginBase,
|
|
"version",
|
|
new=PropertyMock(return_value=AwesomeVersion("1970-01-01")),
|
|
),
|
|
):
|
|
await coresys.plugins.load()
|
|
|
|
assert attach.call_count == 5
|
|
update.assert_not_called()
|
|
|
|
need_update.return_value = False
|
|
await coresys.plugins.load()
|
|
|
|
assert attach.call_count == 10
|
|
assert update.call_count == 5
|