### 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)
116 lines
3.2 KiB
Python
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
|