Deal with case of when locale time values has characters that can be mistaken
for regex syntax. Fixes bug #883604 .
This commit is contained in:
parent
4f65331483
commit
c82208eecb
|
@ -28,6 +28,16 @@ def main():
|
||||||
for i in range(25):
|
for i in range(25):
|
||||||
strftest(now + (i + j*100)*23*3603)
|
strftest(now + (i + j*100)*23*3603)
|
||||||
|
|
||||||
|
def escapestr(text, ampm):
|
||||||
|
"""Escape text to deal with possible locale values that have regex
|
||||||
|
syntax while allowing regex syntax used for the comparison."""
|
||||||
|
new_text = re.escape(text)
|
||||||
|
new_text = new_text.replace(re.escape(ampm), ampm)
|
||||||
|
new_text = new_text.replace("\%", "%")
|
||||||
|
new_text = new_text.replace("\:", ":")
|
||||||
|
new_text = new_text.replace("\?", "?")
|
||||||
|
return new_text
|
||||||
|
|
||||||
def strftest(now):
|
def strftest(now):
|
||||||
if verbose:
|
if verbose:
|
||||||
print "strftime test for", time.ctime(now)
|
print "strftime test for", time.ctime(now)
|
||||||
|
@ -50,6 +60,8 @@ def strftest(now):
|
||||||
elif now[3] > 0: clock12 = now[3]
|
elif now[3] > 0: clock12 = now[3]
|
||||||
else: clock12 = 12
|
else: clock12 = 12
|
||||||
|
|
||||||
|
# Make sure any characters that could be taken as regex syntax is
|
||||||
|
# escaped in escapestr()
|
||||||
expectations = (
|
expectations = (
|
||||||
('%a', calendar.day_abbr[now[6]], 'abbreviated weekday name'),
|
('%a', calendar.day_abbr[now[6]], 'abbreviated weekday name'),
|
||||||
('%A', calendar.day_name[now[6]], 'full weekday name'),
|
('%A', calendar.day_name[now[6]], 'full weekday name'),
|
||||||
|
@ -110,7 +122,7 @@ def strftest(now):
|
||||||
except ValueError, error:
|
except ValueError, error:
|
||||||
print "Standard '%s' format gave error:" % e[0], error
|
print "Standard '%s' format gave error:" % e[0], error
|
||||||
continue
|
continue
|
||||||
if re.match(e[1], result): continue
|
if re.match(escapestr(e[1], ampm), result): continue
|
||||||
if not result or result[0] == '%':
|
if not result or result[0] == '%':
|
||||||
print "Does not support standard '%s' format (%s)" % (e[0], e[2])
|
print "Does not support standard '%s' format (%s)" % (e[0], e[2])
|
||||||
else:
|
else:
|
||||||
|
@ -125,7 +137,7 @@ def strftest(now):
|
||||||
print "Error for nonstandard '%s' format (%s): %s" % \
|
print "Error for nonstandard '%s' format (%s): %s" % \
|
||||||
(e[0], e[2], str(result))
|
(e[0], e[2], str(result))
|
||||||
continue
|
continue
|
||||||
if re.match(e[1], result):
|
if re.match(escapestr(e[1], ampm), result):
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Supports nonstandard '%s' format (%s)" % (e[0], e[2])
|
print "Supports nonstandard '%s' format (%s)" % (e[0], e[2])
|
||||||
elif not result or result[0] == '%':
|
elif not result or result[0] == '%':
|
||||||
|
|
Loading…
Reference in New Issue