mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-15 13:35:05 +00:00
feat(tracks)!: match a language tag to the variant it means
A tag with a region (en-US, es-419) matches only that variant and reports a miss instead of taking another region. A bare tag takes the variant it means (pt -> pt-BR, es -> es-ES) and falls back to any variant only when that one is missing. `orig` prefers the title's own tag, `-sl orig` resolves, forced and SDH subtitles are picked from their own pools, and the track name no longer strips the region from the cached language. BREAKING CHANGE: -l es-419 no longer selects es-ES, and language_priority, language_tags and muxing.default_language treat a regional tag as exact.
This commit is contained in:
@@ -9,7 +9,7 @@ from __future__ import annotations
|
||||
|
||||
import inspect
|
||||
import logging
|
||||
from typing import Any, cast
|
||||
from typing import Any, Optional, cast
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -77,7 +77,13 @@ class FakeService:
|
||||
raise AttributeError(name)
|
||||
|
||||
|
||||
def run(monkeypatch: pytest.MonkeyPatch, caplog: pytest.LogCaptureFixture, episodes: dict, **flags: Any) -> Any:
|
||||
def run(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
episodes: dict,
|
||||
service: Optional[FakeService] = None,
|
||||
**flags: Any,
|
||||
) -> Any:
|
||||
"""Return the Selected ids, the exit code, or None for a run that completes."""
|
||||
monkeypatch.setattr(Tracks, "tree", lambda self, *a, **k: (_ for _ in ()).throw(Selected(self)))
|
||||
monkeypatch.setattr("unshackle.core.providers.search_metadata", lambda *a, **k: None)
|
||||
@@ -96,7 +102,7 @@ def run(monkeypatch: pytest.MonkeyPatch, caplog: pytest.LogCaptureFixture, episo
|
||||
kwargs.update(flags)
|
||||
caplog.set_level(logging.WARNING, logger="test_kind_only")
|
||||
try:
|
||||
cmd.result(cast(Service, FakeService(episodes)), **kwargs)
|
||||
cmd.result(cast(Service, service or FakeService(episodes)), **kwargs)
|
||||
except Selected as sel:
|
||||
return sel.ids
|
||||
except SystemExit as exc:
|
||||
|
||||
Reference in New Issue
Block a user