mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-12 20:15:10 +00:00
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.
106 lines
3.5 KiB
Python
106 lines
3.5 KiB
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from unshackle.core.utilities import find_missing_langs
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"requested,available,expected",
|
|
[
|
|
(["en"], ["en"], []),
|
|
(["en", "ja"], ["en", "ja", "fr"], []),
|
|
(["en", "fil"], ["en"], ["fil"]),
|
|
(["en", "ko", "ja"], ["en"], ["ko", "ja"]),
|
|
(["fil"], ["en", "ja"], ["fil"]),
|
|
(["fil", "ko"], ["en"], ["fil", "ko"]),
|
|
(["es"], ["es-419"], []),
|
|
(["es-419"], ["es"], ["es-419"]),
|
|
(["es-419"], ["es-MX", "es-ES"], ["es-419"]),
|
|
(["en-US"], ["en-GB"], ["en-US"]),
|
|
(["en"], ["en-US"], []),
|
|
(["all"], [], []),
|
|
(["best"], [], []),
|
|
(["orig"], [], []),
|
|
(["all", "en"], ["en"], []),
|
|
(["best", "fil"], ["en"], ["fil"]),
|
|
([], ["en"], []),
|
|
(["en"], [], ["en"]),
|
|
(["en"], [None, "en"], []),
|
|
(["en"], [None], ["en"]),
|
|
(["zh"], ["zh-Hans"], []),
|
|
(["zh-CN"], ["zh-Hans"], []),
|
|
(["zh-Hans"], ["zh-CN"], []),
|
|
(["zh-TW"], ["zh-Hant"], []),
|
|
(["zh-Hant"], ["zh-TW"], []),
|
|
(["zh"], ["zh-Hant"], ["zh"]),
|
|
(["zh-Hans"], ["zh-Hant"], ["zh-Hans"]),
|
|
(["zh-CN"], ["zh-TW"], ["zh-CN"]),
|
|
(["zh-HK"], ["zh-Hant"], ["zh-HK"]),
|
|
(["zh"], ["cmn"], []),
|
|
(["cmn"], ["zh"], []),
|
|
(["zh"], ["yue"], ["zh"]),
|
|
(["yue"], ["zh-HK"], ["yue"]),
|
|
(["fil"], ["tl"], []),
|
|
(["tl"], ["fil"], []),
|
|
(["fil"], ["tgl"], []),
|
|
(["tgl"], ["fil"], []),
|
|
(["fil"], ["fil-PH"], []),
|
|
(["tl"], ["fil-PH"], []),
|
|
],
|
|
)
|
|
def test_close_match(requested, available, expected):
|
|
assert find_missing_langs(requested, available, exact=False) == expected
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"requested,available,expected",
|
|
[
|
|
(["es"], ["es-419"], ["es"]),
|
|
(["es-419"], ["es"], ["es-419"]),
|
|
(["en"], ["en-US"], []),
|
|
(["en-US"], ["en"], []),
|
|
(["en"], ["en-GB"], ["en"]),
|
|
(["en-US"], ["en-GB"], ["en-US"]),
|
|
(["en-US"], ["en-US"], []),
|
|
(["en-US", "en-GB"], ["en-US"], ["en-GB"]),
|
|
(["en"], ["en"], []),
|
|
(["all", "es-419"], ["es"], ["es-419"]),
|
|
(["zh"], ["zh-Hans"], []),
|
|
(["zh-CN"], ["zh-Hans"], []),
|
|
(["zh-TW"], ["zh-Hant"], []),
|
|
(["zh"], ["cmn"], []),
|
|
(["zh-HK"], ["zh-Hant"], ["zh-HK"]),
|
|
(["zh-Hans"], ["zh-Hant"], ["zh-Hans"]),
|
|
(["zh-CN"], ["zh-TW"], ["zh-CN"]),
|
|
(["fil"], ["tl"], []),
|
|
(["tl"], ["fil"], []),
|
|
(["fil"], ["tgl"], []),
|
|
(["fil"], ["fil-PH"], []),
|
|
(["tl"], ["fil-PH"], []),
|
|
],
|
|
)
|
|
def test_exact_match(requested, available, expected):
|
|
assert find_missing_langs(requested, available, exact=True) == expected
|
|
|
|
|
|
def test_order_preserved():
|
|
assert find_missing_langs(["ja", "ko", "fr"], ["en"], exact=False) == ["ja", "ko", "fr"]
|
|
|
|
|
|
def test_duplicates_in_request():
|
|
assert find_missing_langs(["fil", "fil", "en"], ["en"], exact=False) == ["fil", "fil"]
|
|
|
|
|
|
def test_zh_catalogue_simplified_only_misses_traditional():
|
|
assert find_missing_langs(["zh-Hant", "zh-TW"], ["en", "zh-Hans"], exact=False) == ["zh-Hant", "zh-TW"]
|
|
|
|
|
|
def test_mixed_zh_fil_request():
|
|
assert find_missing_langs(["en", "zh-Hans", "fil"], ["en", "tl"], exact=False) == ["zh-Hans"]
|
|
|
|
|
|
def test_zh_cn_request_with_tw_catalogue():
|
|
assert find_missing_langs(["zh-CN"], ["zh-TW"], exact=False) == ["zh-CN"]
|
|
assert find_missing_langs(["zh-CN"], ["zh-TW"], exact=True) == ["zh-CN"]
|