import (
"bufio"
- "bytes"
"fmt"
+ "internal/testenv"
"io"
"net"
"net/http"
func check(t *testing.T) {
if !cgiTested {
cgiTested = true
- cgiWorks = exec.Command("./testdata/test.cgi").Run() == nil
+ cgiWorks = testenv.Command(t, "./testdata/test.cgi").Run() == nil
}
if !cgiWorks {
// No Perl on Windows, needed by test.cgi
check(t)
h := &Handler{
Path: "testdata/test.cgi",
- Root: "/myscript/",
+ Root: "/myscript//",
}
expectedMap := map[string]string{
- "env-PATH_INFO": "bar",
+ "env-PATH_INFO": "/bar",
"env-QUERY_STRING": "a=b",
"env-REQUEST_URI": "/myscript/bar?a=b",
"env-SCRIPT_FILENAME": "testdata/test.cgi",
- "env-SCRIPT_NAME": "/myscript/",
+ "env-SCRIPT_NAME": "/myscript",
}
runCgiTest(t, h, "GET /myscript/bar?a=b HTTP/1.0\nHost: example.com\n\n", expectedMap)
}
"env-QUERY_STRING": "a=b",
"env-REQUEST_URI": "/bar?a=b",
"env-SCRIPT_FILENAME": "testdata/test.cgi",
- "env-SCRIPT_NAME": "/",
+ "env-SCRIPT_NAME": "",
}
runCgiTest(t, h, "GET /bar?a=b HTTP/1.0\nHost: example.com\n\n", expectedMap)
}
}
perl, _ = filepath.Abs(perl)
- cmd := exec.Command(perl, "-e", "print 123")
+ cmd := testenv.Command(t, perl, "-e", "print 123")
cmd.Env = []string{"PATH=/garbage"}
out, err := cmd.Output()
if err != nil || string(out) != "123" {
func TestHandlerStderr(t *testing.T) {
check(t)
- var stderr bytes.Buffer
+ var stderr strings.Builder
h := &Handler{
Path: "testdata/test.cgi",
Root: "/test.cgi",