Author: Brian Kearns <[email protected]>
Branch:
Changeset: r62255:7be6c0646eb4
Date: 2013-03-08 17:19 -0500
http://bitbucket.org/pypy/pypy/changeset/7be6c0646eb4/
Log: test and fix datetime unpickle checking of tzinfo arg
diff --git a/lib_pypy/datetime.py b/lib_pypy/datetime.py
--- a/lib_pypy/datetime.py
+++ b/lib_pypy/datetime.py
@@ -1425,7 +1425,10 @@
ord(string[0]), ord(string[1]), ord(string[2]),
ord(string[3]), ord(string[4]), ord(string[5]))
self._microsecond = (((us1 << 8) | us2) << 8) | us3
- self._tzinfo = tzinfo
+ if tzinfo is None or isinstance(tzinfo, _tzinfo_class):
+ self._tzinfo = tzinfo
+ else:
+ raise TypeError("bad tzinfo state arg")
def __reduce__(self):
return (time, self._getstate())
@@ -1922,7 +1925,10 @@
ord(string[7]), ord(string[8]), ord(string[9]))
self._year = yhi * 256 + ylo
self._microsecond = (((us1 << 8) | us2) << 8) | us3
- self._tzinfo = tzinfo
+ if tzinfo is None or isinstance(tzinfo, _tzinfo_class):
+ self._tzinfo = tzinfo
+ else:
+ raise TypeError("bad tzinfo state arg")
def __reduce__(self):
return (self.__class__, self._getstate())
diff --git a/pypy/module/test_lib_pypy/test_datetime.py
b/pypy/module/test_lib_pypy/test_datetime.py
--- a/pypy/module/test_lib_pypy/test_datetime.py
+++ b/pypy/module/test_lib_pypy/test_datetime.py
@@ -25,6 +25,16 @@
e = raises(TypeError, datetime.datetime, '123')
assert e.value.args[0] == 'an integer is required'
+ datetime.time('\x01' * 6, None)
+ with raises(TypeError) as e:
+ datetime.time('\x01' * 6, 123)
+ assert str(e.value) == "bad tzinfo state arg"
+
+ datetime.datetime('\x01' * 10, None)
+ with raises(TypeError) as e:
+ datetime.datetime('\x01' * 10, 123)
+ assert str(e.value) == "bad tzinfo state arg"
+
def test_strptime():
import time, sys
if sys.version_info < (2, 6):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit