summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2004-03-20 23:09:40 (GMT)
committerBrett Cannon <bcannon@gmail.com>2004-03-20 23:09:40 (GMT)
commitc82208eecbe97e1535be4b1c8c12a68d54d29bd5 (patch)
tree58adf3b3d7acd66c6f457aa61976476b56426f88 /Lib
parent4f65331483197a9909b19694688c55fdf9ca7a37 (diff)
downloadcpython-c82208eecbe97e1535be4b1c8c12a68d54d29bd5.zip
cpython-c82208eecbe97e1535be4b1c8c12a68d54d29bd5.tar.gz
cpython-c82208eecbe97e1535be4b1c8c12a68d54d29bd5.tar.bz2
Deal with case of when locale time values has characters that can be mistaken
for regex syntax. Fixes bug #883604 .
Diffstat (limited to 'Lib')
-rwxr-xr-xLib/test/test_strftime.py16
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] == '%':