Ctrl K
ComunidadGuías…

backend/tests/test_language_list_extended.py

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""Every ISO 639-1 language is selectable, named in English and German (1.16.0).

The picker stopped at 64 languages while providers serve far more; the
catalog providers alone declare 224 codes. The extension must not move any
existing tag: foreign-track cleanup decides keep/strip from these tables.
"""

from collections import Counter

from config_language_data import _LANGUAGE_TAGS, SUPPORTED_LANGUAGES, normalize_language_code
from config_language_names import EXTRA_LANGUAGES, GERMAN_NAMES


def test_every_language_has_an_english_and_a_german_name():
    assert len(SUPPORTED_LANGUAGES) >= 180
    assert all(entry["name"] and entry["name_de"] for entry in SUPPORTED_LANGUAGES)
    assert {e["code"]: e["name_de"] for e in SUPPORTED_LANGUAGES}["de"] == "Deutsch"


def test_codes_are_unique_and_sorted_by_english_name():
    codes = [entry["code"] for entry in SUPPORTED_LANGUAGES]
    assert len(codes) == len(set(codes))
    names = [entry["name"] for entry in SUPPORTED_LANGUAGES]
    assert names == sorted(names)


def test_core_languages_keep_a_german_name_each():
    core = {entry["code"] for entry in SUPPORTED_LANGUAGES} - {row[0] for row in EXTRA_LANGUAGES}
    assert core <= set(GERMAN_NAMES)


def test_three_letter_tags_of_new_languages_resolve():
    assert normalize_language_code("bel") == "be"
    assert normalize_language_code("wel") == "cy"
    assert normalize_language_code("cym") == "cy"
    assert normalize_language_code("tib") == "bo"
    assert normalize_language_code("kurdish") == "ku"


def test_existing_tags_did_not_move():
    assert normalize_language_code("ger") == "de"
    assert normalize_language_code("nob") == "no"
    assert normalize_language_code("pob") == "pt"
    assert normalize_language_code("chi-tra") == "zh-hant"


def test_no_tag_belongs_to_two_languages():
    counts = Counter(tag for tags in _LANGUAGE_TAGS.values() for tag in tags)
    assert [tag for tag, n in counts.items() if n > 1] == []


def test_lat_stays_unknown_because_it_often_means_latin_american_spanish():
    assert normalize_language_code("lat") == "lat"
    assert normalize_language_code("la") == "la"