mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-04-24 05:07:15 +00:00

As described in #4996, Docker 25+ changes made sub-mounts of the /dev filesystem to be mounted read-only. Revert to the previous behavior by adjusting the ReadOnlyNonRecursive option. Cleaner way would be to upstream support for setting this option via Mount class arguments, so this change is meant to be rather a hotfix for the issue. Even better approach would be mounting /dev non-recursively, and taking care of creating all necessary filesystems when creating containers in Supervisor.
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
"""Test audio plugin container."""
|
|
|
|
from ipaddress import IPv4Address
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from docker.types import Mount
|
|
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.docker.manager import DockerAPI
|
|
|
|
from . import DEV_MOUNT
|
|
|
|
|
|
async def test_start(coresys: CoreSys, tmp_supervisor_data: Path, path_extern):
|
|
"""Test starting audio plugin."""
|
|
config_file = tmp_supervisor_data / "audio" / "pulse_audio.json"
|
|
assert not config_file.exists()
|
|
|
|
with patch.object(DockerAPI, "run") as run:
|
|
await coresys.plugins.audio.start()
|
|
|
|
run.assert_called_once()
|
|
assert run.call_args.kwargs["ipv4"] == IPv4Address("172.30.32.4")
|
|
assert run.call_args.kwargs["name"] == "hassio_audio"
|
|
assert run.call_args.kwargs["hostname"] == "hassio-audio"
|
|
assert run.call_args.kwargs["cap_add"] == ["SYS_NICE", "SYS_RESOURCE"]
|
|
assert run.call_args.kwargs["ulimits"] == [
|
|
{"Name": "rtprio", "Soft": 10, "Hard": 10}
|
|
]
|
|
|
|
assert run.call_args.kwargs["mounts"] == [
|
|
DEV_MOUNT,
|
|
Mount(
|
|
type="bind",
|
|
source=coresys.config.path_extern_audio.as_posix(),
|
|
target="/data",
|
|
read_only=False,
|
|
),
|
|
Mount(type="bind", source="/run/dbus", target="/run/dbus", read_only=True),
|
|
Mount(type="bind", source="/run/udev", target="/run/udev", read_only=True),
|
|
Mount(
|
|
type="bind",
|
|
source="/etc/machine-id",
|
|
target="/etc/machine-id",
|
|
read_only=True,
|
|
),
|
|
]
|
|
assert "volumes" not in run.call_args.kwargs
|
|
|
|
assert config_file.exists()
|