backend/tests/test_download_not_applicable.py
Rama master · réplica de lectura del repositorio original.
"""A result the provider cannot serve is a skip, not a provider failure.
SubDL (#212): a season pack that does not contain the requested episode is
found only after it is downloaded. Raising a plain error there counted against
SubDL's circuit breaker and stats, so a few such packs in a row could switch a
healthy provider off.
"""
from unittest.mock import MagicMock
import pytest
from providers.base import ProviderNotApplicableError
from providers.download_manager import download_subtitle, search_and_download_best
def _result(provider_name="subdl", subtitle_id="s1", score=90):
return MagicMock(provider_name=provider_name, subtitle_id=subtitle_id, score=score)
def test_download_passes_the_skip_on_without_tripping_the_breaker():
provider = MagicMock()
provider.download.side_effect = ProviderNotApplicableError("pack lacks E03")
breaker = MagicMock()
breaker.allow_request.return_value = True
with pytest.raises(ProviderNotApplicableError):
download_subtitle(
{"subdl": provider}, {"subdl": breaker}, lambda _n: True, _result(), raise_skips=True
)
breaker.record_failure.assert_not_called()
def test_best_of_moves_on_without_a_stats_failure():
first, second = _result(subtitle_id="pack"), _result(subtitle_id="single")
def download(result):
if result.subtitle_id == "pack":
raise ProviderNotApplicableError("pack lacks E03")
return b"1\n00:00:01,000 --> 00:00:02,000\nHi\n"
stats = MagicMock()
chosen = search_and_download_best(
lambda *a, **kw: [first, second], download, stats, query=MagicMock()
)
assert chosen is second
assert all(c.kwargs.get("success") for c in stats.call_args_list), stats.call_args_list