mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-04-02 16:22:51 +01:00
* Fix environment variable type errors by converting IP addresses to strings Environment variables must be strings, but IPv4Address and IPv4Network objects were being passed directly to container environment dictionaries, causing typeguard validation errors. Changes: - Convert IPv4Address objects to strings in homeassistant.py for SUPERVISOR and HASSIO environment variables - Convert IPv4Network object to string in observer.py for NETWORK_MASK environment variable - Update tests to expect string values instead of IP objects in environment dictionaries - Remove unused ip_network import from test_observer.py Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Use explicit string conversion for extra_hosts IP addresses Use the !s format specifier in the f-string to explicitly convert IPv4Address objects to strings when building the ExtraHosts list. While f-strings implicitly convert objects to strings, using !s makes the conversion explicit and consistent with the environment variable fixes in the previous commit. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
"""Test Observer plugin container."""
|
|
|
|
from ipaddress import IPv4Address
|
|
from unittest.mock import patch
|
|
|
|
from aiodocker.containers import DockerContainer
|
|
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.docker.const import DockerMount, MountType
|
|
from supervisor.docker.manager import DockerAPI
|
|
|
|
|
|
async def test_start(coresys: CoreSys, container: DockerContainer):
|
|
"""Test starting observer plugin."""
|
|
with patch.object(
|
|
DockerAPI, "run", return_value=container.show.return_value
|
|
) as run:
|
|
await coresys.plugins.observer.start()
|
|
|
|
run.assert_called_once()
|
|
assert run.call_args.kwargs["ipv4"] == IPv4Address("172.30.32.6")
|
|
assert run.call_args.kwargs["name"] == "hassio_observer"
|
|
assert run.call_args.kwargs["hostname"] == "hassio-observer"
|
|
assert run.call_args.kwargs["restart_policy"] == {"Name": "always"}
|
|
assert run.call_args.kwargs["extra_hosts"] == {
|
|
"supervisor": IPv4Address("172.30.32.2")
|
|
}
|
|
assert run.call_args.kwargs["oom_score_adj"] == -300
|
|
assert run.call_args.kwargs["environment"]["NETWORK_MASK"] == "172.30.32.0/23"
|
|
assert run.call_args.kwargs["ports"] == {"80/tcp": 4357}
|
|
assert run.call_args.kwargs["mounts"] == [
|
|
DockerMount(
|
|
type=MountType.BIND,
|
|
source="/run/docker.sock",
|
|
target="/run/docker.sock",
|
|
read_only=True,
|
|
),
|
|
]
|
|
assert "volumes" not in run.call_args.kwargs
|