- event bus systen - all components are independent - preparation for web frontend
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
import pytest
|
|
from ruamel.yaml import YAML
|
|
|
|
VALID_CONFIG: dict[str, Any] = {
|
|
"general": {
|
|
"figure_folder": "music",
|
|
"serial_port": "/dev/ttyUSB0",
|
|
"min_volume": 0,
|
|
"max_volume": 60,
|
|
"initial_volume": 40,
|
|
},
|
|
"figures": {
|
|
"fuchs": {"id": "04a1b2c3d4", "colors": ["#ff6600", "#ffcc00", "#331100", "wff"]},
|
|
"eule": {"id": "04b2c3d4e5", "colors": ["#3355ff", "#66aaff", "#001133", "#ffffff"]},
|
|
},
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def config_dir(tmp_path: Path) -> Path:
|
|
"""A directory with a valid ``music/`` tree and two figures' worth of tracks."""
|
|
for figure, tracks in (("fuchs", 3), ("eule", 2)):
|
|
folder = tmp_path / "music" / figure
|
|
folder.mkdir(parents=True)
|
|
for index in range(tracks):
|
|
(folder / f"{index:02d} - track.mp3").write_bytes(b"")
|
|
return tmp_path
|
|
|
|
|
|
def write_config(directory: Path, data: dict[str, Any], name: str = "config.yml") -> Path:
|
|
path = directory / name
|
|
with path.open("w", encoding="utf-8") as handle:
|
|
YAML(typ="safe").dump(data, handle)
|
|
return path
|