]> Cypherpunks repositories - gostls13.git/commitdiff
http: add test for panic inside hijacked request
authorAndrew Gerrand <adg@golang.org>
Tue, 18 Oct 2011 21:23:13 +0000 (08:23 +1100)
committerAndrew Gerrand <adg@golang.org>
Tue, 18 Oct 2011 21:23:13 +0000 (08:23 +1100)
R=golang-dev, rsc, rsc
CC=golang-dev
https://golang.org/cl/5283052

src/pkg/http/serve_test.go

index 731a3279f04bbb6c737cb401fc89663e89f3a580..2ff66d5ce55f0d0c6c93b6fe612165049f3b9436 100644 (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()