# 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"
	"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 := os.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")
	}
}
