]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.13] cmd/go: don't split internal test main packages twice
authorJay Conrod <jayconrod@google.com>
Mon, 16 Sep 2019 17:45:20 +0000 (13:45 -0400)
committerBryan C. Mills <bcmills@google.com>
Wed, 25 Sep 2019 14:40:04 +0000 (14:40 +0000)
Fixes #34328

Change-Id: Ia6253038c525089e20a1da64a2c5c9dcc57edd74
Reviewed-on: https://go-review.googlesource.com/c/go/+/195677
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
(cherry picked from commit 4d18a7ceb2d37b148061ee2e153d56aaef4de8fc)
Reviewed-on: https://go-review.googlesource.com/c/go/+/197064
Run-TryBot: Bryan C. Mills <bcmills@google.com>

src/cmd/go/internal/load/test.go
src/cmd/go/testdata/script/list_split_main.txt [new file with mode: 0644]

index 2864fb5ebbdb7019e1afa0a27457cfdfdd81f4dc..aac7d7d481fd1cd0e9b4619edbf048e35a36d62c 100644 (file)
@@ -405,7 +405,7 @@ func recompileForTest(pmain, preal, ptest, pxtest *Package) {
                // covered packages are imported by pmain. Linking multiple packages
                // compiled with '-p main' causes duplicate symbol errors.
                // See golang.org/issue/30907, golang.org/issue/34114.
-               if p.Name == "main" && p != pmain {
+               if p.Name == "main" && p != pmain && p != ptest {
                        split()
                }
        }
diff --git a/src/cmd/go/testdata/script/list_split_main.txt b/src/cmd/go/testdata/script/list_split_main.txt
new file mode 100644 (file)
index 0000000..74e7d5d
--- /dev/null
@@ -0,0 +1,25 @@
+# This test checks that a "main" package with an external test package
+# is recompiled only once.
+# Verifies golang.org/issue/34321.
+
+env GO111MODULE=off
+
+go list -e -test -deps -f '{{if not .Standard}}{{.ImportPath}}{{end}}' pkg
+cmp stdout want
+
+-- $GOPATH/src/pkg/pkg.go --
+package main
+
+func main() {}
+
+-- $GOPATH/src/pkg/pkg_test.go --
+package main
+
+import "testing"
+
+func Test(t *testing.T) {}
+
+-- want --
+pkg
+pkg [pkg.test]
+pkg.test