]> Cypherpunks repositories - gostls13.git/commitdiff
net/http/httptest: don't crash in mime sniffing if HeaderMap is nil
authorBrad Fitzpatrick <bradfitz@golang.org>
Thu, 10 Dec 2015 18:11:15 +0000 (10:11 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 10 Dec 2015 18:51:54 +0000 (18:51 +0000)
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 <rsc@golang.org>
Reviewed-by: Nodir Turakulov <nodir@google.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>

src/net/http/httptest/recorder.go
src/net/http/httptest/recorder_test.go

index c813cf5021ae8198c057fa5f06e5840a28414ab5..7c51af1867a078b1af1c0739c9f50e1cab2547be 100644 (file)
@@ -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))
        }
 
index a5a1725fa98fff5aa1998b6629a9a1b48311c3a1..c29b6d4cf91d307f786e681cf6e166a22e903cf0 100644 (file)
@@ -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, "<html>")
+                       },
+                       check(hasHeader("Content-Type", "text/html; charset=utf-8")),
+               },
        }
        r, _ := http.NewRequest("GET", "http://foo.com/", nil)
        for _, tt := range tests {