Commits

Barry Warsaw committed 6a8d5e0

parsedate_tz(): Return a 1 in the tm_yday field so that the value is
acceptable to Python 2.4's time.strftime(). This fix mirrors the behavior in
email 3.0. That field is documented as being "not useable" so it might as
well not be buggy too <wink>.

Add a test for this behavior and update a few tests that were expecting a 0 in
this field. After committing I will run the entire Python 2.3 test suite to
ensure this doesn't break any Python tests.

Comments (0)

Files changed (2)

Lib/email/_parseaddr.py

-# Copyright (C) 2002 Python Software Foundation
+# Copyright (C) 2002-2006 Python Software Foundation
 
 """Email address parsing code.
 
         else:
             tzsign = 1
         tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60)
-    tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 0, tzoffset)
-    return tuple
+    return yy, mm, dd, thh, tmm, tss, 0, 1, 0, tzoffset
 
 
 def parsedate(data):

Lib/email/test/test_email.py

     def test_parsedate_no_dayofweek(self):
         eq = self.assertEqual
         eq(Utils.parsedate_tz('25 Feb 2003 13:47:26 -0800'),
-           (2003, 2, 25, 13, 47, 26, 0, 0, 0, -28800))
+           (2003, 2, 25, 13, 47, 26, 0, 1, 0, -28800))
 
     def test_parsedate_compact_no_dayofweek(self):
         eq = self.assertEqual
         eq(Utils.parsedate_tz('5 Feb 2003 13:47:26 -0800'),
-           (2003, 2, 5, 13, 47, 26, 0, 0, 0, -28800))
+           (2003, 2, 5, 13, 47, 26, 0, 1, 0, -28800))
+
+    def test_parsedate_acceptable_to_time_functions(self):
+        eq = self.assertEqual
+        timetup = Utils.parsedate('5 Feb 2003 13:47:26 -0800')
+        eq(int(time.mktime(timetup)), 1044470846)
+        eq(int(time.strftime('%Y', timetup)), 2003)
+        timetup = Utils.parsedate_tz('5 Feb 2003 13:47:26 -0800')
+        eq(int(time.mktime(timetup[:9])), 1044470846)
+        eq(int(time.strftime('%Y', timetup[:9])), 2003)
 
     def test_parseaddr_empty(self):
         self.assertEqual(Utils.parseaddr('<>'), ('', ''))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.