http: add test for panic inside hijacked request

R=golang-dev, rsc, rsc
CC=golang-dev
https://golang.org/cl/5283052
This commit is contained in:
Andrew Gerrand 2011-10-19 08:23:13 +11:00
parent b1fd528db5
commit aa42881ed0

View file

@ -864,6 +864,14 @@ func TestZeroLengthPostAndResponse(t *testing.T) {
}
func TestHandlerPanic(t *testing.T) {
testHandlerPanic(t, false)
}
func TestHandlerPanicWithHijack(t *testing.T) {
testHandlerPanic(t, true)
}
func testHandlerPanic(t *testing.T, withHijack bool) {
// Unlike the other tests that set the log output to ioutil.Discard
// to quiet the output, this test uses a pipe. The pipe serves three
// purposes:
@ -884,7 +892,14 @@ func TestHandlerPanic(t *testing.T) {
log.SetOutput(pw)
defer log.SetOutput(os.Stderr)
ts := httptest.NewServer(HandlerFunc(func(ResponseWriter, *Request) {
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
if withHijack {
rwc, _, err := w.(Hijacker).Hijack()
if err != nil {
t.Logf("unexpected error: %v", err)
}
defer rwc.Close()
}
panic("intentional death for testing")
}))
defer ts.Close()