mirror of
https://github.com/golang/go
synced 2024-11-18 13:14:47 -07:00
e2cc5a1191
Regtests are slow, and make `go test ./internal/lsp/...` slow. Also, having them in the tools module means they can't use staticcheck, go-diff, etc. Move them to the gopls module. This means that they're annoying to work with unless you open the gopls module, but hopefully that annoyance will be gone soon when we support multi-module workspaces. For golang/go#39384 Change-Id: Ib99c994ffdac56d4da13af981ad397a90a7523af Reviewed-on: https://go-review.googlesource.com/c/tools/+/252682 Run-TryBot: Robert Findley <rfindley@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
89 lines
2.7 KiB
Go
89 lines
2.7 KiB
Go
// Copyright 2020 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package regtest
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"golang.org/x/tools/internal/testenv"
|
|
)
|
|
|
|
func TestHoverAndDocumentLink(t *testing.T) {
|
|
testenv.NeedsGo1Point(t, 13)
|
|
const program = `
|
|
-- go.mod --
|
|
module mod.test
|
|
|
|
go 1.12
|
|
|
|
require import.test v1.2.3
|
|
-- main.go --
|
|
package main
|
|
|
|
import "import.test/pkg"
|
|
|
|
func main() {
|
|
println(pkg.Hello)
|
|
}`
|
|
|
|
const proxy = `
|
|
-- import.test@v1.2.3/go.mod --
|
|
module import.test
|
|
|
|
go 1.12
|
|
-- import.test@v1.2.3/pkg/const.go --
|
|
package pkg
|
|
|
|
const Hello = "Hello"
|
|
`
|
|
runner.Run(t, program, func(t *testing.T, env *Env) {
|
|
env.OpenFile("main.go")
|
|
env.OpenFile("go.mod")
|
|
|
|
modLink := "https://pkg.go.dev/mod/import.test@v1.2.3"
|
|
pkgLink := "https://pkg.go.dev/import.test@v1.2.3/pkg"
|
|
|
|
// First, check that we get the expected links via hover and documentLink.
|
|
content, _ := env.Hover("main.go", env.RegexpSearch("main.go", "pkg.Hello"))
|
|
if content == nil || !strings.Contains(content.Value, pkgLink) {
|
|
t.Errorf("hover: got %v in main.go, want contains %q", content, pkgLink)
|
|
}
|
|
content, _ = env.Hover("go.mod", env.RegexpSearch("go.mod", "import.test"))
|
|
if content == nil || !strings.Contains(content.Value, pkgLink) {
|
|
t.Errorf("hover: got %v in go.mod, want contains %q", content, pkgLink)
|
|
}
|
|
links := env.DocumentLink("main.go")
|
|
if len(links) != 1 || links[0].Target != pkgLink {
|
|
t.Errorf("documentLink: got %v for main.go, want link to %q", links, pkgLink)
|
|
}
|
|
links = env.DocumentLink("go.mod")
|
|
if len(links) != 1 || links[0].Target != modLink {
|
|
t.Errorf("documentLink: got %v for go.mod, want link to %q", links, modLink)
|
|
}
|
|
|
|
// Then change the environment to make these links private.
|
|
env.ChangeEnv(map[string]string{"GOPRIVATE": "import.test"})
|
|
|
|
// Finally, verify that the links are gone.
|
|
content, _ = env.Hover("main.go", env.RegexpSearch("main.go", "pkg.Hello"))
|
|
if content == nil || strings.Contains(content.Value, pkgLink) {
|
|
t.Errorf("hover: got %v in main.go, want non-empty hover without %q", content, pkgLink)
|
|
}
|
|
content, _ = env.Hover("go.mod", env.RegexpSearch("go.mod", "import.test"))
|
|
if content == nil || strings.Contains(content.Value, modLink) {
|
|
t.Errorf("hover: got %v in go.mod, want contains %q", content, modLink)
|
|
}
|
|
links = env.DocumentLink("main.go")
|
|
if len(links) != 0 {
|
|
t.Errorf("documentLink: got %d document links for main.go, want 0\nlinks: %v", len(links), links)
|
|
}
|
|
links = env.DocumentLink("go.mod")
|
|
if len(links) != 0 {
|
|
t.Errorf("documentLink: got %d document links for go.mod, want 0\nlinks: %v", len(links), links)
|
|
}
|
|
}, WithProxyFiles(proxy))
|
|
}
|