[3.12] gh-53203: Improve tests for strptime() (GH-125090) (GH-125093)

Run them with different locales and different date and time.

Add the @run_with_locales() decorator to run the test with multiple
locales.

Improve the run_with_locale() context manager/decorator -- it now
catches only expected exceptions and reports the test as skipped if no
appropriate locale is available.
(cherry picked from commit 19984fe024)
This commit is contained in:
Serhiy Storchaka 2024-10-08 12:47:37 +03:00 committed by GitHub
parent bc237ed9a8
commit 82257374b9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 199 additions and 84 deletions

View file

@ -2,7 +2,6 @@ import codecs
import contextlib
import copy
import io
import locale
import pickle
import sys
import unittest
@ -1700,16 +1699,10 @@ class CodecsModuleTest(unittest.TestCase):
self.assertRaises(TypeError, codecs.getwriter)
self.assertRaises(LookupError, codecs.getwriter, "__spam__")
@support.run_with_locale('LC_CTYPE', 'tr_TR')
def test_lookup_issue1813(self):
# Issue #1813: under Turkish locales, lookup of some codecs failed
# because 'I' is lowercased as "ı" (dotless i)
oldlocale = locale.setlocale(locale.LC_CTYPE)
self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale)
try:
locale.setlocale(locale.LC_CTYPE, 'tr_TR')
except locale.Error:
# Unsupported locale on this system
self.skipTest('test needs Turkish locale')
c = codecs.lookup('ASCII')
self.assertEqual(c.name, 'ascii')