1
0
mirror of https://github.com/golang/go synced 2024-11-26 20:11:26 -07:00

debug/buildinfo: fix test for build settings

This CL fixes the debug/buildinfo test, which did not expect build settings.

For #37475

Change-Id: Ie8c15ec633b4eec6a976120c8db64f116589d98e
Reviewed-on: https://go-review.googlesource.com/c/go/+/356012
Trust: Jay Conrod <jayconrod@google.com>
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
Jay Conrod 2021-10-14 14:57:49 -07:00
parent b59467e036
commit 9e8ed86813

View File

@ -13,6 +13,7 @@ import (
"os/exec"
"path"
"path/filepath"
"regexp"
"runtime"
"strings"
"testing"
@ -114,6 +115,23 @@ func TestReadFile(t *testing.T) {
}
}
goVersionRe := regexp.MustCompile("(?m)^go\t.*\n")
buildRe := regexp.MustCompile("(?m)^build\t.*\n")
cleanOutputForComparison := func(got string) string {
// Remove or replace anything that might depend on the test's environment
// so we can check the output afterward with a string comparison.
// We'll remove all build lines except the compiler, just to make sure
// build lines are included.
got = goVersionRe.ReplaceAllString(got, "go\tGOVERSION\n")
got = buildRe.ReplaceAllStringFunc(got, func(match string) string {
if strings.HasPrefix(match, "build\tcompiler\t") {
return match
}
return ""
})
return got
}
cases := []struct {
name string
build func(t *testing.T, goos, goarch string) string
@ -142,9 +160,10 @@ func TestReadFile(t *testing.T) {
{
name: "valid_modules",
build: buildWithModules,
want: "go\t$GOVERSION\n" +
want: "go\tGOVERSION\n" +
"path\texample.com/m\n" +
"mod\texample.com/m\t(devel)\t\n",
"mod\texample.com/m\t(devel)\t\n" +
"build\tcompiler\tgc\n",
},
{
name: "invalid_modules",
@ -158,7 +177,7 @@ func TestReadFile(t *testing.T) {
{
name: "valid_gopath",
build: buildWithGOPATH,
want: "go\t$GOVERSION\n",
want: "go\tGOVERSION\n",
},
{
name: "invalid_gopath",
@ -193,8 +212,7 @@ func TestReadFile(t *testing.T) {
t.Fatalf("unexpected success; want error containing %q", tc.wantErr)
} else if got, err := info.MarshalText(); err != nil {
t.Fatalf("unexpected error marshaling BuildInfo: %v", err)
} else {
got := strings.ReplaceAll(string(got), runtime.Version(), "$GOVERSION")
} else if got := cleanOutputForComparison(string(got)); got != tc.want {
if got != tc.want {
t.Fatalf("got:\n%s\nwant:\n%s", got, tc.want)
}