[Python-checkins] python/dist/src/Lib/test test_datetime.py, 1.46, 1.47

tim_one at users.sourceforge.net tim_one at users.sourceforge.net
Mon Jun 7 19:05:03 EDT 2004


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5714/Lib/test
Modified Files:
	test_datetime.py 
Log Message:
SF 952807: Unpickling pickled instances of subclasses of datetime.date,
datetime.datetime and datetime.time could yield insane objects. Thanks
to Jiwon Seo for the fix.
Bugfix candidate. I'll backport it to 2.3.
Index: test_datetime.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_datetime.py,v
retrieving revision 1.46
retrieving revision 1.47
diff -C2 -d -r1.46 -r1.47
*** test_datetime.py	21 Mar 2004 23:38:41 -0000	1.46
--- test_datetime.py	7 Jun 2004 23:04:30 -0000	1.47
***************
*** 511,514 ****
--- 511,517 ----
 self.assertEqual(dt2, dt - days)
 
+ class SubclassDate(date):
+ sub_var = 1
+ 
 class TestDate(HarmlessMixedComparison):
 # Tests here should pass for both dates and datetimes, except for a
***************
*** 1030,1033 ****
--- 1033,1045 ----
 self.assertEqual(dt2.newmeth(-7), dt1.year + dt1.month - 7)
 
+ def test_pickling_subclass_date(self):
+ 
+ args = 6, 7, 23
+ orig = SubclassDate(*args)
+ for pickler, unpickler, proto in pickle_choices:
+ green = pickler.dumps(orig, proto)
+ derived = unpickler.loads(green)
+ self.assertEqual(orig, derived)
+ 
 def test_backdoor_resistance(self):
 # For fast unpickling, the constructor accepts a pickle string.
***************
*** 1054,1057 ****
--- 1066,1072 ----
 # datetime tests
 
+ class SubclassDatetime(datetime):
+ sub_var = 1
+ 
 class TestDateTime(TestDate):
 
***************
*** 1297,1300 ****
--- 1312,1323 ----
 self.assertEqual(b.day, 7)
 
+ def test_pickling_subclass_datetime(self):
+ args = 6, 7, 23, 20, 59, 1, 64**2
+ orig = SubclassDatetime(*args)
+ for pickler, unpickler, proto in pickle_choices:
+ green = pickler.dumps(orig, proto)
+ derived = unpickler.loads(green)
+ self.assertEqual(orig, derived)
+ 
 def test_more_compare(self):
 # The test_compare() inherited from TestDate covers the error cases.
***************
*** 1501,1504 ****
--- 1524,1530 ----
 dt1.second - 7)
 
+ class SubclassTime(time):
+ sub_var = 1
+ 
 class TestTime(HarmlessMixedComparison):
 
***************
*** 1701,1704 ****
--- 1727,1738 ----
 self.assertEqual(orig, derived)
 
+ def test_pickling_subclass_time(self):
+ args = 20, 59, 16, 64**2
+ orig = SubclassTime(*args)
+ for pickler, unpickler, proto in pickle_choices:
+ green = pickler.dumps(orig, proto)
+ derived = unpickler.loads(green)
+ self.assertEqual(orig, derived)
+ 
 def test_bool(self):
 cls = self.theclass


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /