diff --git a/babel/units.py b/babel/units.py index 0f32014aa..52fc56a41 100644 --- a/babel/units.py +++ b/babel/units.py @@ -88,6 +88,7 @@ def _find_unit_pattern(unit_id: str, locale: Locale | str | None = None) -> str ) if new_id in unit_patterns: return new_id + unit_id = new_id # ... and finally fuzzy matching. for unit_pattern in sorted(unit_patterns, key=len): diff --git a/tests/test_units.py b/tests/test_units.py index dcb938775..9a6fd6035 100644 --- a/tests/test_units.py +++ b/tests/test_units.py @@ -1,6 +1,8 @@ +from functools import partial + import pytest -from babel.units import format_unit, get_unit_name +from babel.units import _DEPRECATED_UNIT_IDS, format_unit, get_unit_name # New units in CLDR 46 @@ -37,10 +39,13 @@ def test_issue_1217(count, unit, locale, length, expected): assert format_unit(count, unit, length, locale=locale) == expected -def test_deprecated_unit_ids(): - for id in ("concentr-permillion", "concentr-portion", "concentr-portion-per-1e9"): - with pytest.warns(DeprecationWarning, match=id): - format_unit(1, id, locale='en') +@pytest.mark.parametrize(('unit_id', 'replacement'), _DEPRECATED_UNIT_IDS.items()) +def test_deprecated_unit_ids(unit_id, replacement): + for func in (partial(format_unit, 1), get_unit_name): + with pytest.warns(DeprecationWarning, match=unit_id) as record: + result = func(unit_id, locale='en') + assert len(record) == 1 + assert result == func(replacement, locale='en') @pytest.mark.parametrize(