]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: list test packages even when the main package has an error
authorMichael Matloob <matloob@golang.org>
Mon, 23 Mar 2020 17:52:37 +0000 (13:52 -0400)
committerMichael Matloob <matloob@golang.org>
Tue, 24 Mar 2020 00:04:19 +0000 (00:04 +0000)
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 <matloob@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/cmd/go/internal/list/list.go
src/cmd/go/testdata/script/load_test_pkg_err.txt [new file with mode: 0644]

index b90a6bf49a74486fb9a789a8cce6248a1c815063..6ca15611211540c5c0389740c9520f08924ac47d 100644 (file)
@@ -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 (file)
index 0000000..b306549
--- /dev/null
@@ -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