mirror of
https://github.com/beetbox/beets.git
synced 2026-02-20 14:21:34 +01:00
Fix replaygain tests
This commit is contained in:
parent
83f16716de
commit
78a773b116
1 changed files with 26 additions and 15 deletions
|
|
@ -14,12 +14,11 @@
|
|||
|
||||
|
||||
import unittest
|
||||
from typing import ClassVar
|
||||
from typing import Any, ClassVar
|
||||
|
||||
import pytest
|
||||
from mediafile import MediaFile
|
||||
|
||||
from beets import config
|
||||
from beets.test.helper import (
|
||||
AsIsImporterMixin,
|
||||
ImportTestCase,
|
||||
|
|
@ -39,10 +38,15 @@ try:
|
|||
except (ImportError, ValueError):
|
||||
GST_AVAILABLE = False
|
||||
|
||||
if any(has_program(cmd, ["-v"]) for cmd in ["mp3gain", "aacgain"]):
|
||||
GAIN_PROG_AVAILABLE = True
|
||||
else:
|
||||
GAIN_PROG_AVAILABLE = False
|
||||
|
||||
GAIN_PROG = next(
|
||||
(
|
||||
cmd
|
||||
for cmd in ["mp3gain", "mp3rgain", "aacgain"]
|
||||
if has_program(cmd, ["-v"])
|
||||
),
|
||||
None,
|
||||
)
|
||||
|
||||
FFMPEG_AVAILABLE = has_program("ffmpeg", ["-version"])
|
||||
|
||||
|
|
@ -63,14 +67,18 @@ class ReplayGainTestCase(PluginMixin, ImportTestCase):
|
|||
plugin = "replaygain"
|
||||
preload_plugin = False
|
||||
|
||||
backend: ClassVar[str]
|
||||
plugin_config: ClassVar[dict[str, Any]]
|
||||
|
||||
@property
|
||||
def backend(self):
|
||||
return self.plugin_config["backend"]
|
||||
|
||||
def setUp(self):
|
||||
# Implemented by Mixins, see above. This may decide to skip the test.
|
||||
self.test_backend()
|
||||
|
||||
super().setUp()
|
||||
self.config["replaygain"]["backend"] = self.backend
|
||||
self.config["replaygain"].set(self.plugin_config)
|
||||
|
||||
self.load_plugins()
|
||||
|
||||
|
|
@ -82,7 +90,7 @@ class ThreadedImportMixin:
|
|||
|
||||
|
||||
class GstBackendMixin:
|
||||
backend = "gstreamer"
|
||||
plugin_config: ClassVar[dict[str, str]] = {"backend": "gstreamer"}
|
||||
has_r128_support = True
|
||||
|
||||
def test_backend(self):
|
||||
|
|
@ -90,15 +98,18 @@ class GstBackendMixin:
|
|||
try:
|
||||
# Check if required plugins can be loaded by instantiating a
|
||||
# GStreamerBackend (via its .__init__).
|
||||
config["replaygain"]["targetlevel"] = 89
|
||||
GStreamerBackend(config["replaygain"], None)
|
||||
self.config["replaygain"]["targetlevel"] = 89
|
||||
GStreamerBackend(self.config["replaygain"], None)
|
||||
except FatalGstreamerPluginReplayGainError as e:
|
||||
# Skip the test if plugins could not be loaded.
|
||||
self.skipTest(str(e))
|
||||
|
||||
|
||||
class CmdBackendMixin:
|
||||
backend = "command"
|
||||
plugin_config: ClassVar[dict[str, str]] = {
|
||||
"backend": "command",
|
||||
"command": "mp3gain",
|
||||
}
|
||||
has_r128_support = False
|
||||
|
||||
def test_backend(self):
|
||||
|
|
@ -107,7 +118,7 @@ class CmdBackendMixin:
|
|||
|
||||
|
||||
class FfmpegBackendMixin:
|
||||
backend = "ffmpeg"
|
||||
plugin_config: ClassVar[dict[str, str]] = {"backend": "ffmpeg"}
|
||||
has_r128_support = True
|
||||
|
||||
def test_backend(self):
|
||||
|
|
@ -332,7 +343,7 @@ class ReplayGainGstCliTest(
|
|||
FNAME = "full" # file contains only silence
|
||||
|
||||
|
||||
@unittest.skipIf(not GAIN_PROG_AVAILABLE, "no *gain command found")
|
||||
@unittest.skipIf(not GAIN_PROG, "no *gain command found")
|
||||
class ReplayGainCmdCliTest(
|
||||
ReplayGainCliTest, ReplayGainTestCase, CmdBackendMixin
|
||||
):
|
||||
|
|
@ -369,7 +380,7 @@ class ReplayGainGstImportTest(ImportTest, ReplayGainTestCase, GstBackendMixin):
|
|||
pass
|
||||
|
||||
|
||||
@unittest.skipIf(not GAIN_PROG_AVAILABLE, "no *gain command found")
|
||||
@unittest.skipIf(not GAIN_PROG, "no *gain command found")
|
||||
class ReplayGainCmdImportTest(ImportTest, ReplayGainTestCase, CmdBackendMixin):
|
||||
pass
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue