[Python-Dev] RE: test_strptime; test_logging; test_time failure
Brett C.
drifty@alum.berkeley.edu
Wed, 23 Jul 2003 13:04:59 -0700
Tim Peters wrote:
> [Brett C.]
>>I should have been more explicit; I meant after *every* individual
>>test and not after the battery of tests.
>
>
> OK, and back to an unpatched _strptime.py. With the current CVS
> locale-restoration code (which differs from what it was half an hour ago,
> but should have the same effect):
>
<SNIP of tests passing with test_logging modified>
>
>
> Again, without restoring locale in test_logging:
>
> C:\Code\python\PCbuild>python ../lib/test/regrtest.py test_strptime
> test_logging
> test_time
> time.strftime("%c")
> '07/22/03 20:39:09'
>
So no AM/PM.
> _strptime.TimeRE()['c']
> '(?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\\d|0[1-9]|
> [1-9]| [1-9])/(?P<y>\\d\\d)\\s*(?P<H>2[0-3]|[0-1]\\d|\\d)
> :(?P<M>[0-5]\\d|\\d):(?P<S>6[0-1]|[0-5]\\d|\\d)'
>
> locale.getdefaultlocale()
> ('en_US', 'cp1252')
>
> locale.getlocale(locale.LC_TIME)
> (None, None)
>
Note value of here.
> test_strptime
> time.strftime("%c")
> '07/22/03 20:39:10'
>
> _strptime.TimeRE()['c']
> '(?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\\d|0[1-9]|
> [1-9]| [1-9])/(?P<y>\\d\\d)\\s*(?P<H>2[0-3]|[0-1]\\d|\\d)
> :(?P<M>[0-5]\\d|\\d):(?P<S>6[0-1]|[0-5]\\d|\\d)'
>
> locale.getdefaultlocale()
> ('en_US', 'cp1252')
>
> locale.getlocale(locale.LC_TIME)
> (None, None)
>
> test_logging
> time.strftime("%c")
> '07/22/2003 08:39:11 PM'
>
> _strptime.TimeRE()['c']
> '(?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\\d|0[1-9]|
> [1-9]| [1-9])/(?P<y>\\d\\d)\\s*(?P<H>2[0-3]|[0-1]\\d|\\d)
> :(?P<M>[0-5]\\d|\\d):(?P<S>6[0-1]|[0-5]\\d|\\d)'
>
> locale.getdefaultlocale()
> ('en_US', 'cp1252')
>
> locale.getlocale(locale.LC_TIME)
> ['English_United States', '1252']
>
> test_time
> test test_time failed -- Traceback (most recent call last):
> File "C:\CODE\PYTHON\lib\test\test_time.py", line 49, in test_strptime
> self.fail('conversion specifier: %r failed.' % format)
> File "C:\CODE\PYTHON\lib\unittest.py", line 260, in fail
> raise self.failureException, msg
> AssertionError: conversion specifier: ' %c' failed.
>
> time.strftime("%c")
> '07/22/2003 08:39:13 PM'
>
test_logging does its magic and now AM/PM appears.
> _strptime.TimeRE()['c']
> '(?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\\d|0[1-9]|
> [1-9]| [1-9])/(?P<y>\\d\\d)\\s*(?P<H>2[0-3]|[0-1]\\d|\\d)
> :(?P<M>[0-5]\\d|\\d):(?P<S>6[0-1]|[0-5]\\d|\\d)'
>
> locale.getdefaultlocale()
> ('en_US', 'cp1252')
>
> locale.getlocale(locale.LC_TIME)
> ['English_United States', '1252']
>
And now locale.getlocale(locale.LC_TIME) returns a different value!
> 2 tests OK.
> 1 test failed:
> test_time
>
> C:\Code\python\PCbuild>
>
So this should be solvable by changing some comparison code and what is
used to represent the language. I will have a look and see if I can
figure out where this is going wrong. If I don't have it fixed by the
end of today I will rip out the caching code and just leave a fix for
2.3.1 and 2.4 .
-Brett