mirror of
https://github.com/golang/go
synced 2024-11-22 16:14:56 -07:00
cmd/go/internal/load/test: parse overlay files for test functions
The existing implementation implicitly reads from the filesystem instead of using the overlay file data (due to src == nil), so pass in the overlaid source if we have an overlay for this file. Fixes #44946 Change-Id: I61ce09d10c5edac1b47332583efdcd3c1241f58a Reviewed-on: https://go-review.googlesource.com/c/go/+/305071 Reviewed-by: Jay Conrod <jayconrod@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> Trust: Jay Conrod <jayconrod@google.com> Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
ca3aefc4a9
commit
46fa8afca6
@ -21,6 +21,7 @@ import (
|
||||
"unicode"
|
||||
"unicode/utf8"
|
||||
|
||||
"cmd/go/internal/fsys"
|
||||
"cmd/go/internal/str"
|
||||
"cmd/go/internal/trace"
|
||||
)
|
||||
@ -578,7 +579,13 @@ 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.
|
||||
src, err := fsys.Open(filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer src.Close()
|
||||
f, err := parser.ParseFile(testFileSet, filename, src, parser.ParseComments)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
24
src/cmd/go/testdata/script/test_overlay.txt
vendored
Normal file
24
src/cmd/go/testdata/script/test_overlay.txt
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
[short] skip
|
||||
|
||||
cd $WORK/gopath/src/foo
|
||||
go test -list=. -overlay=overlay.json .
|
||||
stdout 'TestBar'
|
||||
|
||||
-- go.mod --
|
||||
module test.pkg
|
||||
-- foo/foo_test.go --
|
||||
package foo
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestFoo(t *testing.T) { }
|
||||
-- tmp/bar_test.go --
|
||||
package foo
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestBar(t *testing.T) {
|
||||
t.Fatal("dummy failure")
|
||||
}
|
||||
-- foo/overlay.json --
|
||||
{"Replace": {"foo_test.go": "../tmp/bar_test.go"}}
|
Loading…
Reference in New Issue
Block a user