diff options
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/test/test_strftime.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Lib/test/test_strftime.py b/Lib/test/test_strftime.py index 44e2ae2..e9d3826 100755 --- a/Lib/test/test_strftime.py +++ b/Lib/test/test_strftime.py @@ -28,6 +28,16 @@ def main(): for i in range(25): 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): if verbose: print "strftime test for", time.ctime(now) @@ -50,6 +60,8 @@ def strftest(now): elif now[3] > 0: clock12 = now[3] else: clock12 = 12 + # Make sure any characters that could be taken as regex syntax is + # escaped in escapestr() expectations = ( ('%a', calendar.day_abbr[now[6]], 'abbreviated weekday name'), ('%A', calendar.day_name[now[6]], 'full weekday name'), @@ -110,7 +122,7 @@ def strftest(now): except ValueError, error: print "Standard '%s' format gave error:" % e[0], error continue - if re.match(e[1], result): continue + if re.match(escapestr(e[1], ampm), result): continue if not result or result[0] == '%': print "Does not support standard '%s' format (%s)" % (e[0], e[2]) else: @@ -125,7 +137,7 @@ def strftest(now): print "Error for nonstandard '%s' format (%s): %s" % \ (e[0], e[2], str(result)) continue - if re.match(e[1], result): + if re.match(escapestr(e[1], ampm), result): if verbose: print "Supports nonstandard '%s' format (%s)" % (e[0], e[2]) elif not result or result[0] == '%': |