From 8c2c35debebaaa86aab1f180940f0a77db0b6f30 Mon Sep 17 00:00:00 2001
From: Nodir Turakulov <nodir@google.com>
Date: Fri, 4 Sep 2015 10:05:31 -0700
Subject: [PATCH] net/http/httptest: ResponseRecorder.WriteString

Fixes #11000

Change-Id: Ic137e8a6c5c6b5b7eee213aca9acf78368e1d686
Reviewed-on: https://go-review.googlesource.com/14296
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
---
 src/net/http/httptest/recorder.go      | 11 +++++++++++
 src/net/http/httptest/recorder_test.go |  8 ++++++++
 2 files changed, 19 insertions(+)

diff --git a/src/net/http/httptest/recorder.go b/src/net/http/httptest/recorder.go
index 5451f54234..30c5140dae 100644
--- a/src/net/http/httptest/recorder.go
+++ b/src/net/http/httptest/recorder.go
@@ -55,6 +55,17 @@ func (rw *ResponseRecorder) Write(buf []byte) (int, error) {
 	return len(buf), nil
 }
 
+// WriteString always succeeds and writes to rw.Body, if not nil.
+func (rw *ResponseRecorder) WriteString(str string) (int, error) {
+	if !rw.wroteHeader {
+		rw.WriteHeader(200)
+	}
+	if rw.Body != nil {
+		rw.Body.WriteString(str)
+	}
+	return len(str), nil
+}
+
 // WriteHeader sets rw.Code.
 func (rw *ResponseRecorder) WriteHeader(code int) {
 	if !rw.wroteHeader {
diff --git a/src/net/http/httptest/recorder_test.go b/src/net/http/httptest/recorder_test.go
index 2b563260c7..bc486e6b63 100644
--- a/src/net/http/httptest/recorder_test.go
+++ b/src/net/http/httptest/recorder_test.go
@@ -6,6 +6,7 @@ package httptest
 
 import (
 	"fmt"
+	"io"
 	"net/http"
 	"testing"
 )
@@ -67,6 +68,13 @@ func TestRecorder(t *testing.T) {
 			},
 			check(hasStatus(200), hasContents("hi first"), hasFlush(false)),
 		},
+		{
+			"write string",
+			func(w http.ResponseWriter, r *http.Request) {
+				io.WriteString(w, "hi first")
+			},
+			check(hasStatus(200), hasContents("hi first"), hasFlush(false)),
+		},
 		{
 			"flush",
 			func(w http.ResponseWriter, r *http.Request) {
-- 
2.30.9