From: Andrew Gerrand Date: Tue, 18 Oct 2011 21:23:13 +0000 (+1100) Subject: http: add test for panic inside hijacked request X-Git-Tag: weekly.2011-10-18~5 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=aa42881ed03c23b89f7eab87768f8669851bc0cc;p=gostls13.git http: add test for panic inside hijacked request R=golang-dev, rsc, rsc CC=golang-dev https://golang.org/cl/5283052 --- diff --git a/src/pkg/http/serve_test.go b/src/pkg/http/serve_test.go index 731a3279f0..2ff66d5ce5 100644 --- a/src/pkg/http/serve_test.go +++ b/src/pkg/http/serve_test.go @@ -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()