gopls/internal/server: "view package doc" of package under test

When "View package documentation" is invoked in a _test.go file,
this change ensures that the documentation for the package under
test is displayed, instead of a 404 Not Found.

Change-Id: I9c9f2205d6ec72cbe5acea1480acdbf2bd3b8b53
Reviewed-on: https://go-review.googlesource.com/c/tools/+/575695
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
diff --git a/gopls/internal/server/command.go b/gopls/internal/server/command.go
index a74af99..079c795 100644
--- a/gopls/internal/server/command.go
+++ b/gopls/internal/server/command.go
@@ -512,6 +512,13 @@
 			return err
 		}
 
+		// When invoked from a _test.go file, show the
+		// documentation of the package under test.
+		path := pkg.Metadata().PkgPath
+		if pkg.Metadata().ForTest != "" {
+			path = pkg.Metadata().ForTest
+		}
+
 		// Start web server.
 		web, err := c.s.getWeb()
 		if err != nil {
@@ -523,7 +530,7 @@
 		// TODO(adonovan): compute fragment (e.g. "#fmt.Println") based on loc.Range.
 		// (Should it document the selected symbol, or the enclosing decl?)
 		fragment := ""
-		url := web.pkgURL(deps.snapshot.View(), pkg.Metadata().PkgPath, fragment)
+		url := web.pkgURL(deps.snapshot.View(), path, fragment)
 		openClientBrowser(ctx, c.s.client, url)
 
 		return nil