From: Brad Fitzpatrick Date: Thu, 10 Dec 2015 18:11:15 +0000 (-0800) Subject: net/http/httptest: don't crash in mime sniffing if HeaderMap is nil X-Git-Tag: go1.6beta1~126 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9ccdc4edac09b83a855be38ab4621bbf2a1d95e9;p=gostls13.git net/http/httptest: don't crash in mime sniffing if HeaderMap is nil Fixes some failing Google tests when run under Go tip (1.6). Updates #12986 Change-Id: I0ca4d20f6103d10ea9464e45730085401336dada Reviewed-on: https://go-review.googlesource.com/17698 Reviewed-by: Russ Cox Reviewed-by: Nodir Turakulov Run-TryBot: Brad Fitzpatrick --- diff --git a/src/net/http/httptest/recorder.go b/src/net/http/httptest/recorder.go index c813cf5021..7c51af1867 100644 --- a/src/net/http/httptest/recorder.go +++ b/src/net/http/httptest/recorder.go @@ -65,6 +65,9 @@ func (rw *ResponseRecorder) writeHeader(b []byte, str string) { if b == nil { b = []byte(str) } + if rw.HeaderMap == nil { + rw.HeaderMap = make(http.Header) + } rw.HeaderMap.Set("Content-Type", http.DetectContentType(b)) } diff --git a/src/net/http/httptest/recorder_test.go b/src/net/http/httptest/recorder_test.go index a5a1725fa9..c29b6d4cf9 100644 --- a/src/net/http/httptest/recorder_test.go +++ b/src/net/http/httptest/recorder_test.go @@ -119,6 +119,17 @@ func TestRecorder(t *testing.T) { }, check(hasHeader("Content-Type", "some/type")), }, + { + "Content-Type detection doesn't crash if HeaderMap is nil", + func(w http.ResponseWriter, r *http.Request) { + // Act as if the user wrote new(httptest.ResponseRecorder) + // rather than using NewRecorder (which initializes + // HeaderMap) + w.(*ResponseRecorder).HeaderMap = nil + io.WriteString(w, "") + }, + check(hasHeader("Content-Type", "text/html; charset=utf-8")), + }, } r, _ := http.NewRequest("GET", "http://foo.com/", nil) for _, tt := range tests {