internal/lsp/regtest: move and re-enable TestRegenerateCgo
Revert https://golang.org/cl/234480, which was unnecessary, and move it
to a more appropriate file.
Change-Id: I3f5a3eccaf0ffe324fee8e27945a2e5ece2ff12c
Reviewed-on: https://go-review.googlesource.com/c/tools/+/238597
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
diff --git a/internal/lsp/regtest/cgo_test.go b/internal/lsp/regtest/cgo_test.go
deleted file mode 100644
index 2abd3dd..0000000
--- a/internal/lsp/regtest/cgo_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-//+build go1.15
-
-package regtest
-
-import (
- "testing"
-
- "golang.org/x/tools/internal/lsp/protocol"
- "golang.org/x/tools/internal/lsp/source"
- "golang.org/x/tools/internal/testenv"
-)
-
-func TestRegenerateCgo(t *testing.T) {
- t.Skip("This test fails in some environments: see golang.org/issues/39135")
- testenv.NeedsTool(t, "cgo")
-
- const workspace = `
--- go.mod --
-module example.com
--- cgo.go --
-package x
-
-/*
-int fortythree() { return 42; }
-*/
-import "C"
-
-func Foo() {
- print(C.fortytwo())
-}
-`
- runner.Run(t, workspace, func(t *testing.T, env *Env) {
- // Open the file. We should have a nonexistant symbol.
- env.OpenFile("cgo.go")
- env.Await(env.DiagnosticAtRegexp("cgo.go", `C\.(fortytwo)`)) // could not determine kind of name for C.fortytwo
-
- // Fix the C function name. We haven't regenerated cgo, so nothing should be fixed.
- env.RegexpReplace("cgo.go", `int fortythree`, "int fortytwo")
- env.SaveBuffer("cgo.go")
- env.Await(env.DiagnosticAtRegexp("cgo.go", `C\.(fortytwo)`))
-
- // Regenerate cgo, fixing the diagnostic.
- lenses := env.CodeLens("cgo.go")
- var lens protocol.CodeLens
- for _, l := range lenses {
- if l.Command.Command == source.CommandRegenerateCgo {
- lens = l
- }
- }
- if _, err := env.Editor.Server.ExecuteCommand(env.Ctx, &protocol.ExecuteCommandParams{
- Command: lens.Command.Command,
- Arguments: lens.Command.Arguments,
- }); err != nil {
- t.Fatal(err)
- }
- env.Await(EmptyDiagnostics("cgo.go"))
- })
-}
diff --git a/internal/lsp/regtest/codelens_test.go b/internal/lsp/regtest/codelens_test.go
index 41bc53d..42c5f74 100644
--- a/internal/lsp/regtest/codelens_test.go
+++ b/internal/lsp/regtest/codelens_test.go
@@ -10,6 +10,7 @@
"golang.org/x/tools/internal/lsp/fake"
"golang.org/x/tools/internal/lsp/protocol"
"golang.org/x/tools/internal/lsp/source"
+ "golang.org/x/tools/internal/testenv"
)
func TestDisablingCodeLens(t *testing.T) {
@@ -118,3 +119,50 @@
}
}, WithProxy(proxyWithLatest))
}
+
+func TestRegenerateCgo(t *testing.T) {
+ testenv.NeedsTool(t, "cgo")
+ testenv.NeedsGo1Point(t, 15)
+
+ const workspace = `
+-- go.mod --
+module example.com
+-- cgo.go --
+package x
+
+/*
+int fortythree() { return 42; }
+*/
+import "C"
+
+func Foo() {
+ print(C.fortytwo())
+}
+`
+ runner.Run(t, workspace, func(t *testing.T, env *Env) {
+ // Open the file. We should have a nonexistant symbol.
+ env.OpenFile("cgo.go")
+ env.Await(env.DiagnosticAtRegexp("cgo.go", `C\.(fortytwo)`)) // could not determine kind of name for C.fortytwo
+
+ // Fix the C function name. We haven't regenerated cgo, so nothing should be fixed.
+ env.RegexpReplace("cgo.go", `int fortythree`, "int fortytwo")
+ env.SaveBuffer("cgo.go")
+ env.Await(env.DiagnosticAtRegexp("cgo.go", `C\.(fortytwo)`))
+
+ // Regenerate cgo, fixing the diagnostic.
+ lenses := env.CodeLens("cgo.go")
+ var lens protocol.CodeLens
+ for _, l := range lenses {
+ if l.Command.Command == source.CommandRegenerateCgo {
+ lens = l
+ }
+ }
+ if _, err := env.Editor.Server.ExecuteCommand(env.Ctx, &protocol.ExecuteCommandParams{
+ Command: lens.Command.Command,
+ Arguments: lens.Command.Arguments,
+ }); err != nil {
+ t.Fatal(err)
+ }
+ env.Await(EmptyDiagnostics("cgo.go"))
+ })
+}