mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-02-15 07:27:13 +00:00
The aiodocker 0.25.0 upgrade (PR #6448) changed how DockerError handles the message parameter. The library now extracts the message string from Docker API JSON responses before passing it to DockerError, rather than passing the entire dict. The port conflict detection tests were written before this change and incorrectly passed dicts to DockerError. This caused TypeErrors when the port conflict detection code tried to match err.message with a regex, expecting a string but receiving a dict. Update both test_addon_start_port_conflict_error and test_observer_start_port_conflict to pass message strings directly, matching the real aiodocker 0.25.0 behavior. Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
"""Test observer plugin."""
|
|
|
|
from http import HTTPStatus
|
|
|
|
import aiodocker
|
|
import pytest
|
|
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.exceptions import ObserverPortConflict
|
|
|
|
|
|
@pytest.mark.usefixtures("container", "tmp_supervisor_data", "path_extern")
|
|
async def test_observer_start_port_conflict(
|
|
coresys: CoreSys, caplog: pytest.LogCaptureFixture
|
|
):
|
|
"""Test port conflict error when trying to start observer."""
|
|
coresys.docker.containers.create.return_value.start.side_effect = aiodocker.DockerError(
|
|
HTTPStatus.INTERNAL_SERVER_ERROR,
|
|
"failed to set up container networking: driver failed programming external connectivity on endpoint hassio_observer (ea4d0fdaa72cf86f2c9199a04208e3eaf0c5a0d6fd34b3c7f4fab2daadb1f3a9): failed to bind host port for 0.0.0.0:4357:172.30.33.4:80/tcp: address already in use",
|
|
)
|
|
await coresys.plugins.observer.load()
|
|
|
|
caplog.clear()
|
|
with pytest.raises(ObserverPortConflict):
|
|
await coresys.plugins.observer.start()
|
|
|
|
assert (
|
|
"Cannot start container hassio_observer because port 4357 is already in use"
|
|
in caplog.text
|
|
)
|