1
0
mirror of https://github.com/golang/go synced 2024-11-18 15:24:41 -07:00
go/godoc/server_test.go
chai2010 fb59b33999 godoc: add missing copyright
Change-Id: Ic0256b511b4d4346702aeac18298614b1e8d5438
Reviewed-on: https://go-review.googlesource.com/9384
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-04-27 04:29:37 +00:00

80 lines
1.6 KiB
Go

// Copyright 2013 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package godoc
import (
"errors"
"expvar"
"net/http"
"net/http/httptest"
"testing"
"text/template"
)
var (
// NOTE: with no plain-text in the template, template.Execute will not
// return an error when http.ResponseWriter.Write does return an error.
tmpl = template.Must(template.New("test").Parse("{{.Foo}}"))
)
type withFoo struct {
Foo int
}
type withoutFoo struct {
}
type errResponseWriter struct {
}
func (*errResponseWriter) Header() http.Header {
return http.Header{}
}
func (*errResponseWriter) WriteHeader(int) {
}
func (*errResponseWriter) Write(p []byte) (int, error) {
return 0, errors.New("error")
}
func TestApplyTemplateToResponseWriter(t *testing.T) {
for _, tc := range []struct {
desc string
rw http.ResponseWriter
data interface{}
expVars int
}{
{
desc: "no error",
rw: &httptest.ResponseRecorder{},
data: &withFoo{},
expVars: 0,
},
{
desc: "template error",
rw: &httptest.ResponseRecorder{},
data: &withoutFoo{},
expVars: 0,
},
{
desc: "ResponseWriter error",
rw: &errResponseWriter{},
data: &withFoo{},
expVars: 1,
},
} {
httpErrors.Init()
applyTemplateToResponseWriter(tc.rw, tmpl, tc.data)
gotVars := 0
httpErrors.Do(func(expvar.KeyValue) {
gotVars++
})
if gotVars != tc.expVars {
t.Errorf("applyTemplateToResponseWriter(%q): got %d vars, want %d", tc.desc, gotVars, tc.expVars)
}
}
}