From af2e75f289c1a9bd55b9b2456ca03d11c6490f16 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Sat, 20 Mar 2004 23:13:49 +0000 Subject: Fix test_strftime.py to escape locale time values that have characters that might be mistaken for regex syntax. Fixes bug #883604 . --- Lib/test/test_strftime.py | 16 ++++++++++++++-- Misc/NEWS | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_strftime.py b/Lib/test/test_strftime.py index 9bd045d..4044557 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] == '%': diff --git a/Misc/NEWS b/Misc/NEWS index e90770f..448e6c8 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -38,6 +38,9 @@ Core and builtins Library ------- +- Bug #883604: Fix Lib/test/test_strftime.py to escape characters from locale + time values that might be mistaken as regex syntax. + - Bug #700055: .pth files can now have any type of line endings. - Patch 817379: Allow absolute ftp paths in urllib2. -- cgit v0.12