diff --git a/src/go/internal/srcimporter/srcimporter_test.go b/src/go/internal/srcimporter/srcimporter_test.go index b84672610c..f8e1c323b3 100644 --- a/src/go/internal/srcimporter/srcimporter_test.go +++ b/src/go/internal/srcimporter/srcimporter_test.go @@ -10,6 +10,7 @@ import ( "go/types" "internal/testenv" "io/ioutil" + "os" "path" "path/filepath" "runtime" @@ -18,6 +19,23 @@ import ( "time" ) +func TestMain(m *testing.M) { + // Add -mod=vendor to GOFLAGS to ensure that we don't fetch modules while importing std or cmd. + // + // TODO(golang.org/issue/30240): If we load go.mod files from vendor/ + // automatically, this will probably no longer be necessary. + var goflags []string + for _, f := range strings.Fields(os.Getenv("GOFLAGS")) { + if !strings.HasPrefix(f, "-mod=") && !strings.HasPrefix(f, "--mod=") { + goflags = append(goflags, f) + } + } + goflags = append(goflags, "-mod=vendor") + os.Setenv("GOFLAGS", strings.Join(goflags, " ")) + + os.Exit(m.Run()) +} + const maxTime = 2 * time.Second var importer = New(&build.Default, token.NewFileSet(), make(map[string]*types.Package))