summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2024-10-21 18:54:12 (GMT)
committerGitHub <noreply@github.com>2024-10-21 18:54:12 (GMT)
commitdcc4fb2c9068f60353f0c0978948b7681f7745e6 (patch)
treeab6fb1486cbab8ba8ba304d75084572f215540bf /Lib/test
parent5ca4e34bc1aab8321911aac6d5b2b9e75ff764d8 (diff)
downloadcpython-dcc4fb2c9068f60353f0c0978948b7681f7745e6.zip
cpython-dcc4fb2c9068f60353f0c0978948b7681f7745e6.tar.gz
cpython-dcc4fb2c9068f60353f0c0978948b7681f7745e6.tar.bz2
gh-124969: Make locale.nl_langinfo(locale.ALT_DIGITS) returning a string again (GH-125774)
This is a follow up of GH-124974. Only Glibc needed a fix. Now the returned value is a string consisting of semicolon-separated symbols on all Posix platforms.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test__locale.py30
1 files changed, 21 insertions, 9 deletions
diff --git a/Lib/test/test__locale.py b/Lib/test/test__locale.py
index e403c2a..7e6e296 100644
--- a/Lib/test/test__locale.py
+++ b/Lib/test/test__locale.py
@@ -26,7 +26,10 @@ candidate_locales = ['es_UY', 'fr_FR', 'fi_FI', 'es_CO', 'pt_PT', 'it_IT',
'bs_BA', 'fr_LU', 'kl_GL', 'fa_IR', 'de_BE', 'sv_SE', 'it_CH', 'uk_UA',
'eu_ES', 'vi_VN', 'af_ZA', 'nb_NO', 'en_DK', 'tg_TJ', 'ps_AF', 'en_US',
'fr_FR.ISO8859-1', 'fr_FR.UTF-8', 'fr_FR.ISO8859-15@euro',
- 'ru_RU.KOI8-R', 'ko_KR.eucKR']
+ 'ru_RU.KOI8-R', 'ko_KR.eucKR',
+ 'ja_JP.UTF-8', 'lzh_TW.UTF-8', 'my_MM.UTF-8', 'or_IN.UTF-8', 'shn_MM.UTF-8',
+ 'ar_AE.UTF-8', 'bn_IN.UTF-8', 'mr_IN.UTF-8', 'th_TH.TIS620',
+]
def setUpModule():
global candidate_locales
@@ -78,11 +81,13 @@ known_alt_digits = {
'C': (0, {}),
'en_US': (0, {}),
'fa_IR': (100, {0: '\u06f0\u06f0', 10: '\u06f1\u06f0', 99: '\u06f9\u06f9'}),
- 'ja_JP': (100, {0: '\u3007', 10: '\u5341', 99: '\u4e5d\u5341\u4e5d'}),
+ 'ja_JP': (100, {1: '\u4e00', 10: '\u5341', 99: '\u4e5d\u5341\u4e5d'}),
'lzh_TW': (32, {0: '\u3007', 10: '\u5341', 31: '\u5345\u4e00'}),
'my_MM': (100, {0: '\u1040\u1040', 10: '\u1041\u1040', 99: '\u1049\u1049'}),
'or_IN': (100, {0: '\u0b66', 10: '\u0b67\u0b66', 99: '\u0b6f\u0b6f'}),
'shn_MM': (100, {0: '\u1090\u1090', 10: '\u1091\u1090', 99: '\u1099\u1099'}),
+ 'ar_AE': (100, {0: '\u0660', 10: '\u0661\u0660', 99: '\u0669\u0669'}),
+ 'bn_IN': (100, {0: '\u09e6', 10: '\u09e7\u09e6', 99: '\u09ef\u09ef'}),
}
if sys.platform == 'win32':
@@ -199,21 +204,28 @@ class _LocaleTests(unittest.TestCase):
def test_alt_digits_nl_langinfo(self):
# Test nl_langinfo(ALT_DIGITS)
tested = False
- for loc, (count, samples) in known_alt_digits.items():
+ for loc in candidate_locales:
with self.subTest(locale=loc):
try:
setlocale(LC_TIME, loc)
except Error:
self.skipTest(f'no locale {loc!r}')
continue
+
with self.subTest(locale=loc):
alt_digits = nl_langinfo(locale.ALT_DIGITS)
- self.assertIsInstance(alt_digits, tuple)
- if count and not alt_digits and support.is_apple:
- self.skipTest(f'ALT_DIGITS is not set for locale {loc!r} on Apple platforms')
- self.assertEqual(len(alt_digits), count)
- for i in samples:
- self.assertEqual(alt_digits[i], samples[i])
+ self.assertIsInstance(alt_digits, str)
+ alt_digits = alt_digits.split(';') if alt_digits else []
+ if alt_digits:
+ self.assertGreaterEqual(len(alt_digits), 10, alt_digits)
+ loc1 = loc.split('.', 1)[0]
+ if loc1 in known_alt_digits:
+ count, samples = known_alt_digits[loc1]
+ if count and not alt_digits:
+ self.skipTest(f'ALT_DIGITS is not set for locale {loc!r} on this platform')
+ self.assertEqual(len(alt_digits), count, alt_digits)
+ for i in samples:
+ self.assertEqual(alt_digits[i], samples[i])
tested = True
if not tested:
self.skipTest('no suitable locales')