From: Jay Conrod Date: Fri, 10 May 2019 20:57:22 +0000 (-0400) Subject: cmd/go: add generated code comment to _testmain.go template X-Git-Tag: go1.13beta1~334 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=309ab1ecc810fad29d09bbf91c22c6bfd1683c6f;p=gostls13.git cmd/go: add generated code comment to _testmain.go template Fixes #31971 Change-Id: I127659be145e348fae20930615666d67dc7971ef Reviewed-on: https://go-review.googlesource.com/c/go/+/176468 Run-TryBot: Jay Conrod Reviewed-by: Brad Fitzpatrick --- diff --git a/src/cmd/go/internal/load/test.go b/src/cmd/go/internal/load/test.go index 1dd439480f..16f50e29d8 100644 --- a/src/cmd/go/internal/load/test.go +++ b/src/cmd/go/internal/load/test.go @@ -641,6 +641,8 @@ var _ = func() bool { `) var testmainTmpl = lazytemplate.New("main", ` +// Code generated by 'go test'. DO NOT EDIT. + package main import ( diff --git a/src/cmd/go/testdata/script/test_generated_main.txt b/src/cmd/go/testdata/script/test_generated_main.txt new file mode 100644 index 0000000000..75ffa9cde2 --- /dev/null +++ b/src/cmd/go/testdata/script/test_generated_main.txt @@ -0,0 +1,35 @@ +# Tests that the generated test main file has a generated code comment. +# This is needed by analyzers that access source files through 'go list'. +# Verifies golang.org/issue/31971. +# TODO(jayconrod): This test is brittle. We should write _testmain.go as +# a build action instead of with an ad-hoc WriteFile call +# in internal/test/test.go. Then we could just grep 'go get -n'. +go test x_test.go + +-- x_test.go -- +package x + +import ( + "os" + "path/filepath" + "io/ioutil" + "regexp" + "testing" +) + +func Test(t *testing.T) { + exePath, err := os.Executable() + if err != nil { + t.Fatal(err) + } + testmainPath := filepath.Join(filepath.Dir(exePath), "_testmain.go") + source, err := ioutil.ReadFile(testmainPath) + if err != nil { + t.Fatal(err) + } + if matched, err := regexp.Match(`(?m)^// Code generated .* DO NOT EDIT\.$`, source); err != nil { + t.Fatal(err) + } else if !matched { + t.Error("_testmain.go does not have generated code comment") + } +}