summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rwxr-xr-xLib/test/test_strftime.py2
-rw-r--r--Lib/test/test_time.py56
2 files changed, 57 insertions, 1 deletions
diff --git a/Lib/test/test_strftime.py b/Lib/test/test_strftime.py
index 9bd045d..44e2ae2 100755
--- a/Lib/test/test_strftime.py
+++ b/Lib/test/test_strftime.py
@@ -38,7 +38,7 @@ def strftest(now):
if now[3] < 12: ampm='(AM|am)'
else: ampm='(PM|pm)'
- jan1 = time.localtime(time.mktime((now[0], 1, 1) + (0,)*6))
+ jan1 = time.localtime(time.mktime((now[0], 1, 1, 0, 0, 0, 0, 1, 0)))
try:
if now[8]: tz = time.tzname[1]
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index 4b9ed99..9e16d0b 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -37,6 +37,62 @@ class TimeTestCase(unittest.TestCase):
except ValueError:
self.fail('conversion specifier: %r failed.' % format)
+ def test_strftime_bounds_checking(self):
+ # Make sure that strftime() checks the bounds of the various parts
+ #of the time tuple.
+
+ # Check year
+ self.assertRaises(ValueError, time.strftime, '',
+ (1899, 1, 1, 0, 0, 0, 0, 1, -1))
+ if time.accept2dyear:
+ self.assertRaises(ValueError, time.strftime, '',
+ (-1, 1, 1, 0, 0, 0, 0, 1, -1))
+ self.assertRaises(ValueError, time.strftime, '',
+ (100, 1, 1, 0, 0, 0, 0, 1, -1))
+ # Check month
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 0, 1, 0, 0, 0, 0, 1, -1))
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 13, 1, 0, 0, 0, 0, 1, -1))
+ # Check day of month
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 0, 0, 0, 0, 0, 1, -1))
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 32, 0, 0, 0, 0, 1, -1))
+ # Check hour
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, -1, 0, 0, 0, 1, -1))
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 24, 0, 0, 0, 1, -1))
+ # Check minute
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, -1, 0, 0, 1, -1))
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 60, 0, 0, 1, -1))
+ # Check second
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 0, -1, 0, 1, -1))
+ # C99 only requires allowing for one leap second, but Python's docs say
+ # allow two leap seconds (0..61)
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 0, 62, 0, 1, -1))
+ # No check for upper-bound day of week;
+ # value forced into range by a ``% 7`` calculation.
+ # Start check at -2 since gettmarg() increments value before taking
+ # modulo.
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 0, 0, -2, 1, -1))
+ # Check day of the year
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 0, 0, 0, 0, -1))
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 0, 0, 0, 367, -1))
+ # Check daylight savings flag
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 0, 0, 0, 1, -2))
+ self.assertRaises(ValueError, time.strftime, '',
+ (1900, 1, 1, 0, 0, 0, 0, 1, 2))
+
def test_strptime(self):
tt = time.gmtime(self.t)
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',