beets/test/util/test_lyrics.py
Šarūnas Nejus a7325e7483
Skip langdetect-dependent tests when package is not installed
Add a `requires_import` pytest marker and `is_importable` fixture to
conditionally skip or adjust assertions based on whether optional
dependencies are available. Apply this to `langdetect`-dependent
language detection tests in lyrics and migration test suites.
2026-03-08 08:19:55 +00:00

40 lines
1.4 KiB
Python

import textwrap
from beets.util.lyrics import Lyrics
class TestLyrics:
def test_instrumental_lyrics(self):
lyrics = Lyrics(
"[Instrumental]", "lrclib", url="https://lrclib.net/api/1"
)
assert lyrics.full_text == "[Instrumental]"
assert lyrics.backend == "lrclib"
assert lyrics.url == "https://lrclib.net/api/1"
assert lyrics.language is None
assert lyrics.translation_language is None
def test_from_legacy_text(self, is_importable):
text = textwrap.dedent("""
[00:00.00] Some synced lyrics / Quelques paroles synchronisées
[00:00.50]
[00:01.00] Some more synced lyrics / Quelques paroles plus synchronisées
Source: https://lrclib.net/api/1/""")
lyrics = Lyrics.from_legacy_text(text)
assert lyrics.full_text == textwrap.dedent(
"""
[00:00.00] Some synced lyrics / Quelques paroles synchronisées
[00:00.50]
[00:01.00] Some more synced lyrics / Quelques paroles plus synchronisées"""
)
assert lyrics.backend == "lrclib"
assert lyrics.url == "https://lrclib.net/api/1/"
langdetect_available = is_importable("langdetect")
assert lyrics.language == ("EN" if langdetect_available else None)
assert lyrics.translation_language == (
"FR" if langdetect_available else None
)