aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2018-07-13 17:24:05 -0400
committerBryan C. Mills <bcmills@google.com>2018-07-19 20:26:18 +0000
commitb47927cc2657ca1e3a1b898632b577cacb3b440c (patch)
tree13a192c0e51f9359b0f650a29cbc6324afcbad41
parent0b3d39c70018c6f149129abb3b05ce8ccffcf292 (diff)
downloadgo-b47927cc2657ca1e3a1b898632b577cacb3b440c.tar.gz
go-b47927cc2657ca1e3a1b898632b577cacb3b440c.zip
cmd/go/internal/list: do not examine TestmainGo if the test fails to load
Fixes #25980. Change-Id: I33c8e72871ffbb1cd1babbcd5dabc8cac0bbcaed Reviewed-on: https://go-review.googlesource.com/123758 Reviewed-by: Russ Cox <rsc@golang.org>
-rw-r--r--src/cmd/go/internal/list/list.go17
-rw-r--r--src/cmd/go/testdata/script/list_test_e.txt9
2 files changed, 18 insertions, 8 deletions
diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go
index 9a5edd4679..c1d008ce38 100644
--- a/src/cmd/go/internal/list/list.go
+++ b/src/cmd/go/internal/list/list.go
@@ -425,16 +425,17 @@ func runList(cmd *base.Command, args []string) {
if len(p.TestGoFiles)+len(p.XTestGoFiles) > 0 {
pmain, _, _, err := load.TestPackagesFor(p, nil)
if err != nil {
- if !*listE {
- base.Errorf("can't load test package: %s", err)
+ if *listE {
+ pkgs = append(pkgs, &load.Package{
+ PackagePublic: load.PackagePublic{
+ ImportPath: p.ImportPath + ".test",
+ Error: &load.PackageError{Err: err.Error()},
+ },
+ })
continue
}
- pmain = &load.Package{
- PackagePublic: load.PackagePublic{
- ImportPath: p.ImportPath + ".test",
- Error: &load.PackageError{Err: err.Error()},
- },
- }
+ base.Errorf("can't load test package: %s", err)
+ continue
}
pkgs = append(pkgs, pmain)
diff --git a/src/cmd/go/testdata/script/list_test_e.txt b/src/cmd/go/testdata/script/list_test_e.txt
new file mode 100644
index 0000000000..3e84de6b07
--- /dev/null
+++ b/src/cmd/go/testdata/script/list_test_e.txt
@@ -0,0 +1,9 @@
+# issue 25980: crash in go list -e -test
+go list -e -test -f '{{.Error}}' p
+stdout '^p/d_test.go:2:8: cannot find package "d" in any of:'
+
+-- p/d.go --
+package d
+-- p/d_test.go --
+package d_test
+import _ "d"