]> Cypherpunks repositories - gostls13.git/commitdiff
net/mail: expose ParseDate, for use parsing Resent-Date headers
authorRuss Cox <rsc@golang.org>
Thu, 20 Oct 2016 20:43:09 +0000 (16:43 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 24 Oct 2016 15:32:28 +0000 (15:32 +0000)
Fixes #16657.

Change-Id: I9425af91a48016b1d7465b9f43cafa792bc00bb3
Reviewed-on: https://go-review.googlesource.com/31581
Reviewed-by: Quentin Smith <quentin@golang.org>
src/net/mail/message.go
src/net/mail/message_test.go

index 0c000697f7b628bdd7d011ca5b425de2930d4f8b..b1d526bba947f2a592872088ec98512eb1457d79 100644 (file)
@@ -92,7 +92,8 @@ func init() {
        }
 }
 
-func parseDate(date string) (time.Time, error) {
+// ParseDate parses an RFC 5322 date string.
+func ParseDate(date string) (time.Time, error) {
        for _, layout := range dateLayouts {
                t, err := time.Parse(layout, date)
                if err == nil {
@@ -119,7 +120,7 @@ func (h Header) Date() (time.Time, error) {
        if hdr == "" {
                return time.Time{}, ErrHeaderNotPresent
        }
-       return parseDate(hdr)
+       return ParseDate(hdr)
 }
 
 // AddressList parses the named header field as a list of addresses.
index bbbba6b584afbef25f786cd436297270e5579dc7..b29e375f2e52535f50bd3b777c242c33dbd783db 100644 (file)
@@ -110,11 +110,16 @@ func TestDateParsing(t *testing.T) {
                }
                date, err := hdr.Date()
                if err != nil {
-                       t.Errorf("Failed parsing %q: %v", test.dateStr, err)
-                       continue
+                       t.Errorf("Header(Date: %s).Date(): %v", test.dateStr, err)
+               } else if !date.Equal(test.exp) {
+                       t.Errorf("Header(Date: %s).Date() = %+v, want %+v", test.dateStr, date, test.exp)
                }
-               if !date.Equal(test.exp) {
-                       t.Errorf("Parse of %q: got %+v, want %+v", test.dateStr, date, test.exp)
+
+               date, err = ParseDate(test.dateStr)
+               if err != nil {
+                       t.Errorf("ParseDate(%s): %v", test.dateStr, err)
+               } else if !date.Equal(test.exp) {
+                       t.Errorf("ParseDate(%s) = %+v, want %+v", test.dateStr, date, test.exp)
                }
        }
 }