]> Cypherpunks repositories - gostls13.git/commitdiff
http/cgi: skip test if perl or CGI.pm not available
authorRuss Cox <rsc@golang.org>
Sun, 6 Mar 2011 16:23:47 +0000 (11:23 -0500)
committerRuss Cox <rsc@golang.org>
Sun, 6 Mar 2011 16:23:47 +0000 (11:23 -0500)
R=bradfitzgo, bradfitzwork
CC=golang-dev
https://golang.org/cl/4264047

src/pkg/http/cgi/cgi_test.go

index d88d787d5870769d1dabd5c4c71368cb9f2b202b..daf9a2cb3eba1bfbc0a67552aef0c9c42b5f6b57 100644 (file)
@@ -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