From 6a9d850b82172225b55bd65e830b1e325b17a724 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Mon, 23 Mar 2020 13:52:37 -0400 Subject: [PATCH] cmd/go: list test packages even when the main package has an error List test packages (when list is run with -e) even when the main package has an error. This is useful to get complete data for go/packages. Fixes #37971 Change-Id: If6ba0270a319ea5e003d1ed8b1ad39e479e95509 Reviewed-on: https://go-review.googlesource.com/c/go/+/224944 Run-TryBot: Michael Matloob TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/list/list.go | 3 --- .../go/testdata/script/load_test_pkg_err.txt | 26 +++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 src/cmd/go/testdata/script/load_test_pkg_err.txt diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go index b90a6bf49a744..6ca1561121154 100644 --- a/src/cmd/go/internal/list/list.go +++ b/src/cmd/go/internal/list/list.go @@ -472,9 +472,6 @@ func runList(cmd *base.Command, args []string) { c := cache.Default() // Add test binaries to packages to be listed. for _, p := range pkgs { - if p.Error != nil { - continue - } if len(p.TestGoFiles)+len(p.XTestGoFiles) > 0 { var pmain, ptest, pxtest *load.Package var err error diff --git a/src/cmd/go/testdata/script/load_test_pkg_err.txt b/src/cmd/go/testdata/script/load_test_pkg_err.txt new file mode 100644 index 0000000000000..b3065490de737 --- /dev/null +++ b/src/cmd/go/testdata/script/load_test_pkg_err.txt @@ -0,0 +1,26 @@ +# Tests issue 37971. Check that tests are still loaded even when the package has an error. + +go list -e -test d +cmp stdout want_stdout + +go list -e -test -deps d +stdout golang.org/fake/d + +-- want_stdout -- +d +d.test +d_test [d.test] +-- d/d.go -- +package d + +import "net/http" + +const d = http.MethodGet +func Get() string { return d; } +-- d/d2.go -- +-- d/d_test.go -- +package d_test + +import "testing" +import "golang.org/fake/d" +func TestD(t *testing.T) { d.Get(); } \ No newline at end of file