]> Cypherpunks repositories - gostls13.git/commitdiff
net/http/cgi: add an empty response test
authorBrad Fitzpatrick <bradfitz@golang.org>
Sun, 26 Feb 2012 22:46:22 +0000 (14:46 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sun, 26 Feb 2012 22:46:22 +0000 (14:46 -0800)
New test for http://code.google.com/p/go/source/detail?r=a73ba18

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5701046

src/pkg/net/http/cgi/host_test.go
src/pkg/net/http/cgi/matryoshka_test.go

index d1bb66a4bdbdaba00ee0c9ff1292001ced2c316a..4db3d850c51a12ba0ef9407e16cd995ecd4e86d2 100644 (file)
@@ -41,6 +41,7 @@ func runCgiTest(t *testing.T, h *Handler, httpreq string, expectedMap map[string
 
        // Make a map to hold the test map that the CGI returns.
        m := make(map[string]string)
+       m["_body"] = rw.Body.String()
        linesRead := 0
 readlines:
        for {
index 1a44df2040115ff8a935c03d16862ccd7f0f6e88..e1a78c8f62f4cdef7ea6b3f58a587541f33d70a9 100644 (file)
@@ -51,6 +51,22 @@ func TestHostingOurselves(t *testing.T) {
        }
 }
 
+// Test that a child handler only writing headers works.
+func TestChildOnlyHeaders(t *testing.T) {
+       h := &Handler{
+               Path: os.Args[0],
+               Root: "/test.go",
+               Args: []string{"-test.run=TestBeChildCGIProcess"},
+       }
+       expectedMap := map[string]string{
+               "_body": "",
+       }
+       replay := runCgiTest(t, h, "GET /test.go?no-body=1 HTTP/1.0\nHost: example.com\n\n", expectedMap)
+       if expected, got := "X-Test-Value", replay.Header().Get("X-Test-Header"); got != expected {
+               t.Errorf("got a X-Test-Header of %q; expected %q", got, expected)
+       }
+}
+
 // Note: not actually a test.
 func TestBeChildCGIProcess(t *testing.T) {
        if os.Getenv("REQUEST_METHOD") == "" {
@@ -59,8 +75,11 @@ func TestBeChildCGIProcess(t *testing.T) {
        }
        Serve(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
                rw.Header().Set("X-Test-Header", "X-Test-Value")
-               fmt.Fprintf(rw, "test=Hello CGI-in-CGI\n")
                req.ParseForm()
+               if req.FormValue("no-body") == "1" {
+                       return
+               }
+               fmt.Fprintf(rw, "test=Hello CGI-in-CGI\n")
                for k, vv := range req.Form {
                        for _, v := range vv {
                                fmt.Fprintf(rw, "param-%s=%s\n", k, v)