sintonia/playout/tests/liquidsoap/entrypoint_test.py
Jonas L 35d0dec4a8
fix: apply replay gain preferences on scheduled files (#2945)
### Description

The replay gain preferences are applied in the legacy code, but the
playout code was missing this feature. The replay gain was not applied
when playout fetched the schedules.


37d1a7685e/legacy/application/models/Schedule.php (L881-L886)
2024-02-08 20:29:10 +01:00

116 lines
3.2 KiB
Python

from pathlib import Path
from subprocess import CalledProcessError, check_call, check_output
from unittest import mock
import pytest
from libretime_playout.config import Config
from libretime_playout.liquidsoap.entrypoint import generate_entrypoint
from libretime_playout.liquidsoap.models import Info, StreamPreferences
from libretime_playout.liquidsoap.version import get_liquidsoap_version
from .conftest import LIQ_VERSION
from .fixtures import TEST_STREAM_CONFIGS, make_config_with_stream
@pytest.mark.parametrize(
"version",
[pytest.param((1, 4, 4), id="1.4")],
)
@pytest.mark.parametrize(
"stream_config",
TEST_STREAM_CONFIGS,
)
def test_generate_entrypoint(
stream_config: Config,
stream_preferences: StreamPreferences,
version,
snapshot,
):
with mock.patch(
"libretime_playout.liquidsoap.entrypoint.here",
Path("/fake"),
):
found = generate_entrypoint(
log_filepath=Path("/var/log/radio.log"),
config=stream_config,
preferences=stream_preferences,
info=Info(
station_name="LibreTime",
),
version=version,
)
assert found == snapshot
@pytest.mark.skipif(
LIQ_VERSION >= (2, 0, 0),
reason="unsupported liquidsoap >= 2.0.0",
)
@pytest.mark.parametrize(
"stream_config",
TEST_STREAM_CONFIGS,
)
def test_liquidsoap_syntax(
tmp_path: Path,
stream_config: Config,
stream_preferences: StreamPreferences,
):
entrypoint_filepath = tmp_path / "radio.liq"
log_filepath = tmp_path / "radio.log"
entrypoint_filepath.write_text(
generate_entrypoint(
log_filepath=log_filepath,
config=stream_config,
preferences=stream_preferences,
info=Info(
station_name="LibreTime",
),
version=get_liquidsoap_version(),
),
encoding="utf-8",
)
check_call(["liquidsoap", "--check", str(entrypoint_filepath)])
@pytest.mark.skipif(
LIQ_VERSION >= (2, 0, 0),
reason="unsupported liquidsoap >= 2.0.0",
)
def test_liquidsoap_unsupported_output_aac(
tmp_path: Path,
stream_preferences: StreamPreferences,
):
entrypoint_filepath = tmp_path / "radio.liq"
log_filepath = tmp_path / "radio.log"
entrypoint_filepath.write_text(
generate_entrypoint(
log_filepath=log_filepath,
config=make_config_with_stream(
outputs={
"icecast": [
{
"enabled": True,
"mount": "main.aac",
"source_password": "hackme",
"audio": {"format": "aac", "bitrate": 128},
}
]
}
),
preferences=stream_preferences,
info=Info(
station_name="LibreTime",
),
version=get_liquidsoap_version(),
),
encoding="utf-8",
)
with pytest.raises(CalledProcessError) as exception:
check_output(["liquidsoap", "--check", str(entrypoint_filepath)])
assert b"You must be missing an optional dependency." in exception.value.stdout