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

cmd/go: make 'go list -test' report the correct import path

When a test variant of a package is created, the two versions cannot
share memory for the fields that contain information about their
imports, as these will be different between the two packagse.

Both the Internal.Imports and the Imports fields must be able to be
updated in the test variant without affecting the values of the
original.

Fixes golang/go#26880

Change-Id: Id61fad7d976e179c6c7711a394ce43ec8302fd7a
Reviewed-on: https://go-review.googlesource.com/128836
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Suzy Mueller 2018-08-09 13:05:54 -04:00 committed by Russ Cox
parent 9f4ea6c25d
commit d611e95cab
2 changed files with 21 additions and 0 deletions

View File

@ -342,6 +342,8 @@ func recompileForTest(pmain, preal, ptest, pxtest *Package) {
p1.ForTest = preal.ImportPath
p1.Internal.Imports = make([]*Package, len(p.Internal.Imports))
copy(p1.Internal.Imports, p.Internal.Imports)
p1.Imports = make([]string, len(p.Imports))
copy(p1.Imports, p.Imports)
p = p1
p.Target = ""
}

View File

@ -0,0 +1,19 @@
# issue 26880: list with tests has wrong variant in imports
go list -test -f '{{.ImportPath}}:{{with .Imports}} {{join . ", "}}{{end}}' a b
cmp stdout imports.txt
-- a/a.go --
package a; import _ "b"
-- b/b.go --
package b
-- b/b_test.go --
package b
-- b/b_x_test.go --
package b_test; import _ "a"
-- imports.txt --
a: b
b:
b.test: b [b.test], b_test [b.test], os, testing, testing/internal/testdeps
b [b.test]:
b_test [b.test]: a [b.test]