Skip to content

Instantly share code, notes, and snippets.

@eandre
Created March 11, 2021 08:48
Show Gist options
  • Save eandre/45f5a554faff3b23f6f5d92f794a222b to your computer and use it in GitHub Desktop.
Save eandre/45f5a554faff3b23f6f5d92f794a222b to your computer and use it in GitHub Desktop.
Support overlays in "go test"
diff --git a/src/cmd/go/internal/load/test.go b/src/cmd/go/internal/load/test.go
index eb8aef3ee2..7274cfcac5 100644
--- a/src/cmd/go/internal/load/test.go
+++ b/src/cmd/go/internal/load/test.go
@@ -15,12 +15,14 @@ import (
"go/parser"
"go/token"
"internal/lazytemplate"
+ "os"
"path/filepath"
"sort"
"strings"
"unicode"
"unicode/utf8"
+ "cmd/go/internal/fsys"
"cmd/go/internal/str"
"cmd/go/internal/trace"
)
@@ -576,7 +578,17 @@ type testFunc struct {
var testFileSet = token.NewFileSet()
func (t *testFuncs) load(filename, pkg string, doImport, seen *bool) error {
- f, err := parser.ParseFile(testFileSet, filename, nil, parser.ParseComments)
+ // Pass in the overlaid source if we have an overlay for this file.
+ var src interface{}
+ if path, ok := fsys.OverlayPath(filename); ok {
+ data, err := os.ReadFile(path)
+ if err != nil {
+ return err
+ }
+ src = data
+ }
+
+ f, err := parser.ParseFile(testFileSet, filename, src, parser.ParseComments)
if err != nil {
return err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment