time.strptime's caching of its locale object was being recreated when the

locale changed but not used during the function call it was recreated during.

The test in this checkin is untested (OS X does not have the proper locale
support for me to test), although the fix for the bug this deals with
was tested by the OP (#1290505).  Once the buildbots verify the test at least
doesn't fail it becomes a backport candidate.
This commit is contained in:
Brett Cannon 2007-04-01 18:47:27 +00:00
parent 8f35f44af3
commit c69066501b
3 changed files with 24 additions and 5 deletions

View file

@ -505,6 +505,23 @@ class CacheTests(unittest.TestCase):
self.failIfEqual(locale_time_id,
id(_strptime._TimeRE_cache.locale_time))
def test_TimeRE_recreation(self):
# The TimeRE instance should be recreated upon changing the locale.
locale_info = locale.getlocale(locale.LC_TIME)
try:
locale.setlocale(locale.LC_TIME, ('en_US', 'UTF8'))
except locale.Error:
return
try:
_strptime.strptime('10', '%d')
first_time_re_id = id(_strptime._TimeRE_cache)
locale.setlocale(locale.LC_TIME, ('de_DE', 'UTF8'))
_strptime.strptime('10', '%d')
second_time_re_id = id(_strptime._TimeRE_cache)
self.failIfEqual(first_time_re_id, second_time_re_id)
finally:
locale.setlocale(locale.LC_TIME, locale_info)
def test_main():
test_support.run_unittest(