From d611e95cabbd531418beb7c1fdc7191ba3151c2a Mon Sep 17 00:00:00 2001 From: Suzy Mueller Date: Thu, 9 Aug 2018 13:05:54 -0400 Subject: [PATCH] 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 --- src/cmd/go/internal/load/test.go | 2 ++ .../go/testdata/script/list_test_imports.txt | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/cmd/go/testdata/script/list_test_imports.txt diff --git a/src/cmd/go/internal/load/test.go b/src/cmd/go/internal/load/test.go index 2cc7c6cb2a..bb9568d07e 100644 --- a/src/cmd/go/internal/load/test.go +++ b/src/cmd/go/internal/load/test.go @@ -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 = "" } diff --git a/src/cmd/go/testdata/script/list_test_imports.txt b/src/cmd/go/testdata/script/list_test_imports.txt new file mode 100644 index 0000000000..51d1ce9a69 --- /dev/null +++ b/src/cmd/go/testdata/script/list_test_imports.txt @@ -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] -- 2.50.0