summaryrefslogtreecommitdiffstats
path: root/Lib/test/datetimetester.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/datetimetester.py')
-rw-r--r--Lib/test/datetimetester.py35
1 files changed, 20 insertions, 15 deletions
diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py
index fb07d2a..55e0619 100644
--- a/Lib/test/datetimetester.py
+++ b/Lib/test/datetimetester.py
@@ -2,18 +2,19 @@
See https://www.zope.dev/Members/fdrake/DateTimeWiki/TestCases
"""
-import io
-import itertools
import bisect
import copy
import decimal
-import sys
+import io
+import itertools
import os
import pickle
import random
import re
import struct
+import sys
import unittest
+import warnings
from array import array
@@ -51,11 +52,12 @@ pickle_choices = [(pickle, pickle, proto)
for proto in range(pickle.HIGHEST_PROTOCOL + 1)]
assert len(pickle_choices) == pickle.HIGHEST_PROTOCOL + 1
+EPOCH_NAIVE = datetime(1970, 1, 1, 0, 0) # For calculating transitions
+
# An arbitrary collection of objects of non-datetime types, for testing
# mixed-type comparisons.
OTHERSTUFF = (10, 34.5, "abc", {}, [], ())
-
# XXX Copied from test_float.
INF = float("inf")
NAN = float("nan")
@@ -2626,9 +2628,10 @@ class TestDateTime(TestDate):
for test_name, ts in test_cases:
with self.subTest(test_name, ts=ts):
with self.assertRaises((ValueError, OverflowError)):
- # converting a Python int to C time_t can raise a
- # OverflowError, especially on 32-bit platforms.
- self.theclass.utcfromtimestamp(ts)
+ with self.assertWarns(DeprecationWarning):
+ # converting a Python int to C time_t can raise a
+ # OverflowError, especially on 32-bit platforms.
+ self.theclass.utcfromtimestamp(ts)
def test_insane_fromtimestamp(self):
# It's possible that some platform maps time_t to double,
@@ -2645,8 +2648,9 @@ class TestDateTime(TestDate):
# exempt such platforms (provided they return reasonable
# results!).
for insane in -1e200, 1e200:
- self.assertRaises(OverflowError, self.theclass.utcfromtimestamp,
- insane)
+ with self.assertWarns(DeprecationWarning):
+ self.assertRaises(OverflowError, self.theclass.utcfromtimestamp,
+ insane)
@unittest.skipIf(sys.platform == "win32", "Windows doesn't accept negative timestamps")
def test_negative_float_fromtimestamp(self):
@@ -3005,7 +3009,7 @@ class TestDateTime(TestDate):
for name, meth_name, kwargs in test_cases:
with self.subTest(name):
constr = getattr(DateTimeSubclass, meth_name)
- if constr == "utcnow":
+ if meth_name == "utcnow":
with self.assertWarns(DeprecationWarning):
dt = constr(**kwargs)
else:
@@ -4733,8 +4737,10 @@ class TestDateTimeTZ(TestDateTime, TZInfoBase, unittest.TestCase):
# Try with and without naming the keyword; for whatever reason,
# utcfromtimestamp() doesn't accept a tzinfo argument.
off42 = FixedOffset(42, "42")
- self.assertRaises(TypeError, meth, ts, off42)
- self.assertRaises(TypeError, meth, ts, tzinfo=off42)
+ with warnings.catch_warnings(category=DeprecationWarning):
+ warnings.simplefilter("ignore", category=DeprecationWarning)
+ self.assertRaises(TypeError, meth, ts, off42)
+ self.assertRaises(TypeError, meth, ts, tzinfo=off42)
def test_tzinfo_timetuple(self):
# TestDateTime tested most of this. datetime adds a twist to the
@@ -6102,15 +6108,14 @@ class ZoneInfo(tzinfo):
def transitions(self):
for (_, prev_ti), (t, ti) in pairs(zip(self.ut, self.ti)):
shift = ti[0] - prev_ti[0]
- # TODO: Remove this use of utcfromtimestamp
- yield datetime.utcfromtimestamp(t), shift
+ yield (EPOCH_NAIVE + timedelta(seconds=t)), shift
def nondst_folds(self):
"""Find all folds with the same value of isdst on both sides of the transition."""
for (_, prev_ti), (t, ti) in pairs(zip(self.ut, self.ti)):
shift = ti[0] - prev_ti[0]
if shift < ZERO and ti[1] == prev_ti[1]:
- yield datetime.utcfromtimestamp(t), -shift, prev_ti[2], ti[2]
+ yield _utcfromtimestamp(datetime, t,), -shift, prev_ti[2], ti[2]
@classmethod
def print_all_nondst_folds(cls, same_abbr=False, start_year=1):