From 55e1fc930b3a4efe4ac8ad74ff7844be4c7ef162 Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Fri, 16 Nov 2018 10:43:21 -0500 Subject: [PATCH] cmd/vet: reenable cgo test 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 TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/cmd/vet/vet_test.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/cmd/vet/vet_test.go b/src/cmd/vet/vet_test.go index 597681aa30..d106c5c29c 100644 --- a/src/cmd/vet/vet_test.go +++ b/src/cmd/vet/vet_test.go @@ -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 { -- 2.48.1