Skip to content

Commit fc88a0f

Browse files
committed
net/mail: expose ParseDate, for use parsing Resent-Date headers
Fixes #16657. Change-Id: I9425af91a48016b1d7465b9f43cafa792bc00bb3 Reviewed-on: https://go-review.googlesource.com/31581 Reviewed-by: Quentin Smith <[email protected]>
1 parent 699fb0f commit fc88a0f

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/net/mail/message.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ func init() {
9292
}
9393
}
9494

95-
func parseDate(date string) (time.Time, error) {
95+
// ParseDate parses an RFC 5322 date string.
96+
func ParseDate(date string) (time.Time, error) {
9697
for _, layout := range dateLayouts {
9798
t, err := time.Parse(layout, date)
9899
if err == nil {
@@ -119,7 +120,7 @@ func (h Header) Date() (time.Time, error) {
119120
if hdr == "" {
120121
return time.Time{}, ErrHeaderNotPresent
121122
}
122-
return parseDate(hdr)
123+
return ParseDate(hdr)
123124
}
124125

125126
// AddressList parses the named header field as a list of addresses.

src/net/mail/message_test.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,16 @@ func TestDateParsing(t *testing.T) {
110110
}
111111
date, err := hdr.Date()
112112
if err != nil {
113-
t.Errorf("Failed parsing %q: %v", test.dateStr, err)
114-
continue
113+
t.Errorf("Header(Date: %s).Date(): %v", test.dateStr, err)
114+
} else if !date.Equal(test.exp) {
115+
t.Errorf("Header(Date: %s).Date() = %+v, want %+v", test.dateStr, date, test.exp)
115116
}
116-
if !date.Equal(test.exp) {
117-
t.Errorf("Parse of %q: got %+v, want %+v", test.dateStr, date, test.exp)
117+
118+
date, err = ParseDate(test.dateStr)
119+
if err != nil {
120+
t.Errorf("ParseDate(%s): %v", test.dateStr, err)
121+
} else if !date.Equal(test.exp) {
122+
t.Errorf("ParseDate(%s) = %+v, want %+v", test.dateStr, date, test.exp)
118123
}
119124
}
120125
}

0 commit comments

Comments
 (0)