diff options
author | Tim Peters <tim.peters@gmail.com> | 2004-06-20 02:50:16 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2004-06-20 02:50:16 (GMT) |
commit | 1b6f7a9057874ecd2793059f210de87837fe1911 (patch) | |
tree | 950e95d9866258870fc075706b99de3fcfbf2e72 /Lib/test | |
parent | 1c3fa18be76d1bcddb2de516913f46a32c5ed860 (diff) | |
download | cpython-1b6f7a9057874ecd2793059f210de87837fe1911.zip cpython-1b6f7a9057874ecd2793059f210de87837fe1911.tar.gz cpython-1b6f7a9057874ecd2793059f210de87837fe1911.tar.bz2 |
Bug 975996: Add _PyTime_DoubleToTimet to C API
New include file timefuncs.h exports private API function
_PyTime_DoubleToTimet() from timemodule.c. timemodule should export
some other functions too (look for painful bits in datetimemodule.c).
Added insane-argument checking to datetime's assorted fromtimestamp()
and utcfromtimestamp() methods. Added insane-argument tests of these
to test_datetime, and insane-argument tests for ctime(), localtime()
and gmtime() to test_time.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_datetime.py | 27 | ||||
-rw-r--r-- | Lib/test/test_time.py | 8 |
2 files changed, 35 insertions, 0 deletions
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py index f7fec57..2a6aca2 100644 --- a/Lib/test/test_datetime.py +++ b/Lib/test/test_datetime.py @@ -730,6 +730,15 @@ class TestDate(HarmlessMixedComparison): self.assertEqual(d.month, month) self.assertEqual(d.day, day) + def test_insane_fromtimestamp(self): + # It's possible that some platform maps time_t to double, + # and that this test will fail there. This test should + # exempt such platforms (provided they return reasonable + # results!). + for insane in -1e200, 1e200: + self.assertRaises(ValueError, self.theclass.fromtimestamp, + insane) + def test_today(self): import time @@ -1380,6 +1389,24 @@ class TestDateTime(TestDate): got = self.theclass.utcfromtimestamp(ts) self.verify_field_equality(expected, got) + def test_insane_fromtimestamp(self): + # It's possible that some platform maps time_t to double, + # and that this test will fail there. This test should + # exempt such platforms (provided they return reasonable + # results!). + for insane in -1e200, 1e200: + self.assertRaises(ValueError, self.theclass.fromtimestamp, + insane) + + def test_insane_utcfromtimestamp(self): + # It's possible that some platform maps time_t to double, + # and that this test will fail there. This test should + # exempt such platforms (provided they return reasonable + # results!). + for insane in -1e200, 1e200: + self.assertRaises(ValueError, self.theclass.utcfromtimestamp, + insane) + def test_utcnow(self): import time diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index 9e16d0b..64f1f01 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -176,6 +176,14 @@ class TimeTestCase(unittest.TestCase): del environ['TZ'] time.tzset() + def test_insane_timestamps(self): + # It's possible that some platform maps time_t to double, + # and that this test will fail there. This test should + # exempt such platforms (provided they return reasonable + # results!). + for func in time.ctime, time.gmtime, time.localtime: + for unreasonable in -1e200, 1e200: + self.assertRaises(ValueError, func, unreasonable) def test_main(): test_support.run_unittest(TimeTestCase) |