backend/tests/test_animetosho_attachment_language.py
Rama master · réplica de lectura del repositorio original.
"""An attachment's own language tag decides its language, for every language.
Prod 2026-11-07: Gachiakuta S01E22 got ``Vietnamese_Tieng_Viet.vie.ass`` as its
English subtitle. ``vie`` was missing from the provider's short ISO table, so
the language fell through to the filename guess, whose default is "en". The
same path saved Indonesian (``ind``) and Catalan (``cat``) tracks as English.
"""
import os
import sys
from unittest.mock import MagicMock
import pytest
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from providers.animetosho import AnimeToshoProvider
from providers.base import VideoQuery
def _attachment(info: dict) -> dict:
return {
"id": 3085253,
"type": "subtitle",
"url": "https://storage.animetosho.xyz/attachments/0028d/c80.xz",
"info": {"format": "ASS", **info},
}
def _results(info: dict, languages: list[str]):
provider = AnimeToshoProvider()
provider.session = MagicMock()
detail = MagicMock()
detail.status_code = 200
detail.json.return_value = {
"files": [{"filename": "Gachiakuta - S01E22.mkv", "attachments": [_attachment(info)]}]
}
provider.session.get.return_value = detail
entry = {"id": 683348, "title": "[LbE3L] Gachiakuta S01 [Multi-Subs]", "num_files": 1}
query = VideoQuery(series_title="Gachiakuta", episode=22, languages=languages)
return provider._process_entry(entry, query)
@pytest.mark.parametrize(
"code, name, expected",
[("vie", "Vietnamese", "vi"), ("ind", "Indonesian", "id"), ("cat", "Catalan", "ca")],
)
def test_a_tagged_foreign_track_is_not_offered_as_english(code, name, expected):
assert _results({"language_code": code, "language": name}, ["en"]) == []
found = _results({"language_code": code, "language": name}, [expected])
assert [r.language for r in found] == [expected]
def test_an_unknown_tag_is_not_guessed_into_english():
assert _results({"language_code": "qaa", "language": "Klingon"}, ["en"]) == []
def test_the_common_tags_still_resolve():
assert [r.language for r in _results({"language_code": "ger"}, ["de"])] == ["de"]
assert [r.language for r in _results({"lang": "eng"}, ["en"])] == ["en"]
def test_an_untagged_track_still_falls_back_to_the_filename_guess():
assert [r.language for r in _results({"language": "English"}, ["en"])] == ["en"]
assert [r.language for r in _results({"language_code": "und"}, ["en"])] == ["en"]
def test_an_untagged_track_named_after_its_language_keeps_it():
assert _results({"language": "Vietnamese"}, ["en"]) == []
assert [r.language for r in _results({"language": "Vietnamese"}, ["vi"])] == ["vi"]