From: Russ Cox Date: Sun, 6 Mar 2011 16:23:47 +0000 (-0500) Subject: http/cgi: skip test if perl or CGI.pm not available X-Git-Tag: weekly.2011-03-07~11 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=255b538152aa4e28eaaca7bf41ea2a5368d77ac9;p=gostls13.git http/cgi: skip test if perl or CGI.pm not available R=bradfitzgo, bradfitzwork CC=golang-dev https://golang.org/cl/4264047 --- diff --git a/src/pkg/http/cgi/cgi_test.go b/src/pkg/http/cgi/cgi_test.go index d88d787d58..daf9a2cb3e 100644 --- a/src/pkg/http/cgi/cgi_test.go +++ b/src/pkg/http/cgi/cgi_test.go @@ -8,15 +8,29 @@ package cgi import ( "bufio" + "exec" "fmt" "http" "http/httptest" "os" - "runtime" "strings" "testing" ) +var cgiScriptWorks = canRun("./testdata/test.cgi") + +func canRun(s string) bool { + c, err := exec.Run(s, []string{s}, nil, ".", exec.DevNull, exec.DevNull, exec.DevNull) + if err != nil { + return false + } + w, err := c.Wait(0) + if err != nil { + return false + } + return w.Exited() && w.ExitStatus() == 0 +} + func newRequest(httpreq string) *http.Request { buf := bufio.NewReader(strings.NewReader(httpreq)) req, err := http.ReadRequest(buf) @@ -59,10 +73,10 @@ readlines: } func skipTest(t *testing.T) bool { - if runtime.GOOS == "windows" { + if !cgiScriptWorks { // No Perl on Windows, needed by test.cgi // TODO: make the child process be Go, not Perl. - t.Logf("Skipping test on Windows; no Perl.") + t.Logf("Skipping test: test.cgi failed.") return true } return false