]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet: reenable cgo test
authorAlan Donovan <adonovan@google.com>
Fri, 16 Nov 2018 15:43:21 +0000 (10:43 -0500)
committerAlan Donovan <adonovan@google.com>
Fri, 16 Nov 2018 17:51:20 +0000 (17:51 +0000)
The reason the 386 trybot was happy but 'GOARCH=386 go test cmd/vet'
was not is that CgoEnabled defaults to false in a cross build;
I have no idea why. Now we ask the go command for the effective
value so that the test works in both cases.

Also, remove stale comment.

Fixes #28829

Change-Id: I1210af34da6986f47924059de5c1f08b2824ace9
Reviewed-on: https://go-review.googlesource.com/c/149958
Run-TryBot: Alan Donovan <adonovan@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/vet/vet_test.go

index 597681aa30f256ddb1308b14a5bb7619a23d4799..d106c5c29ce7c1c1405fcaceb66179746c44cddc 100644 (file)
@@ -70,11 +70,6 @@ func vetCmd(t *testing.T, args ...string) *exec.Cmd {
        return cmd
 }
 
-// TestVet is equivalent to running this:
-//     go build -o ./testvet
-//     errorCheck the output of ./testvet -printfuncs='Warn:1,Warnf:1' testdata/*.go testdata/*.s
-//     rm ./testvet
-//
 func TestVet(t *testing.T) {
        t.Parallel()
        Build(t)
@@ -106,9 +101,8 @@ func TestVet(t *testing.T) {
                t.Run(pkg, func(t *testing.T) {
                        t.Parallel()
 
-                       // Skip for now, pending investigation.
-                       if pkg == "cgo" {
-                               t.Skip("cgo test disabled -- github.com/golang/go/issues/28829")
+                       // Skip cgo test on platforms without cgo.
+                       if pkg == "cgo" && !cgoEnabled(t) {
                                return
                        }
 
@@ -137,6 +131,17 @@ func TestVet(t *testing.T) {
        }
 }
 
+func cgoEnabled(t *testing.T) bool {
+       // Don't trust build.Default.CgoEnabled as it is false for
+       // cross-builds unless CGO_ENABLED is explicitly specified.
+       // That's fine for the builders, but causes commands like
+       // 'GOARCH=386 go test .' to fail.
+       // Instead, we ask the go command.
+       cmd := exec.Command(testenv.GoToolPath(t), "list", "-f", "{{context.CgoEnabled}}")
+       out, _ := cmd.CombinedOutput()
+       return string(out) == "true\n"
+}
+
 func errchk(c *exec.Cmd, files []string, t *testing.T) {
        output, err := c.CombinedOutput()
        if _, ok := err.(*exec.ExitError); !ok {