gopls/internal/regtest: eliminate NoDiagnostics
It is confusing to have both NoDiagnostics and EmptyOrNoDiagnostics.
From a user's perspective, it does not matter whether gopls sends no
diagnostics or sends empty diagnostics, so favor EmptyOrNoDiagnostics.
In a subsequent change, I will rename EmptyOrNoDiagnostics to just
NoDiagnostics.
Also, switch more Await expressions to eager failures along the way.
Change-Id: Ib20b9ad7e7e7c819f793acb931681ec0dd4f76f7
Reviewed-on: https://go-review.googlesource.com/c/tools/+/461876
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
diff --git a/gopls/internal/lsp/regtest/expectation.go b/gopls/internal/lsp/regtest/expectation.go
index 3b623d0..7fcaf51 100644
--- a/gopls/internal/lsp/regtest/expectation.go
+++ b/gopls/internal/lsp/regtest/expectation.go
@@ -749,23 +749,6 @@
}
}
-// NoDiagnostics asserts that no diagnostics are sent for the
-// workspace-relative path name. It should be used primarily in conjunction
-// with a OnceMet, as it has to check that all outstanding diagnostics have
-// already been delivered.
-func NoDiagnostics(name string) Expectation {
- check := func(s State) Verdict {
- if _, ok := s.diagnostics[name]; !ok {
- return Met
- }
- return Unmet
- }
- return SimpleExpectation{
- check: check,
- description: fmt.Sprintf("no diagnostics for %q", name),
- }
-}
-
// DiagnosticAtRegexp expects that there is a diagnostic entry at the start
// position matching the regexp search string re in the buffer specified by
// name. Note that this currently ignores the end position.
diff --git a/gopls/internal/regtest/diagnostics/builtin_test.go b/gopls/internal/regtest/diagnostics/builtin_test.go
index 8de47bc..ae775d9 100644
--- a/gopls/internal/regtest/diagnostics/builtin_test.go
+++ b/gopls/internal/regtest/diagnostics/builtin_test.go
@@ -32,7 +32,7 @@
}
env.Await(OnceMet(
env.DoneWithOpen(),
- NoDiagnostics("builtin.go"),
+ EmptyOrNoDiagnostics("builtin.go"),
))
})
}
diff --git a/gopls/internal/regtest/diagnostics/diagnostics_test.go b/gopls/internal/regtest/diagnostics/diagnostics_test.go
index 84bd5d4..9ef429c 100644
--- a/gopls/internal/regtest/diagnostics/diagnostics_test.go
+++ b/gopls/internal/regtest/diagnostics/diagnostics_test.go
@@ -1092,7 +1092,7 @@
env.Await(
OnceMet(
env.DoneWithChange(),
- NoDiagnostics("foo/foo.go"),
+ EmptyOrNoDiagnostics("foo/foo.go"),
),
)
})
@@ -1208,7 +1208,7 @@
WorkspaceFolders("a"),
).Run(t, mod, func(t *testing.T, env *Env) {
env.OpenFile("a/main.go")
- env.Await(
+ env.AfterChange(
env.DiagnosticAtRegexp("main.go", "x"),
)
})
@@ -1217,8 +1217,8 @@
Settings{"expandWorkspaceToModule": false},
).Run(t, mod, func(t *testing.T, env *Env) {
env.OpenFile("a/main.go")
- env.Await(
- NoDiagnostics("main.go"),
+ env.AfterChange(
+ EmptyOrNoDiagnostics("main.go"),
)
})
}
diff --git a/gopls/internal/regtest/template/template_test.go b/gopls/internal/regtest/template/template_test.go
index afe5797..4e87d04 100644
--- a/gopls/internal/regtest/template/template_test.go
+++ b/gopls/internal/regtest/template/template_test.go
@@ -121,8 +121,11 @@
},
).Run(t, files, func(t *testing.T, env *Env) {
env.Await(
- OnceMet(env.DiagnosticAtRegexp("a/a.tmpl", "()A")),
- NoDiagnostics("b/b.tmpl"),
+ OnceMet(
+ InitialWorkspaceLoad,
+ env.DiagnosticAtRegexp("a/a.tmpl", "()A"),
+ EmptyOrNoDiagnostics("b/b.tmpl"),
+ ),
)
})
}
diff --git a/gopls/internal/regtest/watch/watch_test.go b/gopls/internal/regtest/watch/watch_test.go
index 99c76ff..a62b473 100644
--- a/gopls/internal/regtest/watch/watch_test.go
+++ b/gopls/internal/regtest/watch/watch_test.go
@@ -225,8 +225,8 @@
Run(t, original, func(t *testing.T, env *Env) {
env.WriteWorkspaceFile("c/c.go", `package c; func C() {};`)
env.WriteWorkspaceFile("a/a.go", `package a; import "mod.com/c"; func _() { c.C() }`)
- env.Await(
- NoDiagnostics("a/a.go"),
+ env.AfterChange(
+ EmptyOrNoDiagnostics("a/a.go"),
)
})
}
@@ -490,7 +490,7 @@
env.RemoveWorkspaceFile("a/a1.go")
env.WriteWorkspaceFile("a/a2.go", "package a; func _() {};")
env.AfterChange(
- NoDiagnostics("main.go"),
+ EmptyOrNoDiagnostics("main.go"),
)
})
}
diff --git a/gopls/internal/regtest/workspace/directoryfilters_test.go b/gopls/internal/regtest/workspace/directoryfilters_test.go
index 3f8bf6c..0a1f596 100644
--- a/gopls/internal/regtest/workspace/directoryfilters_test.go
+++ b/gopls/internal/regtest/workspace/directoryfilters_test.go
@@ -53,7 +53,12 @@
WithOptions(
Settings{"directoryFilters": []string{"-exclude"}},
).Run(t, files, func(t *testing.T, env *Env) {
- env.Await(NoDiagnostics("exclude/x.go"))
+ env.Await(
+ OnceMet(
+ InitialWorkspaceLoad,
+ EmptyOrNoDiagnostics("exclude/x.go"),
+ ),
+ )
})
}
@@ -81,8 +86,11 @@
Settings{"directoryFilters": []string{"-exclude"}},
).Run(t, files, func(t *testing.T, env *Env) {
env.Await(
- NoDiagnostics("exclude/exclude.go"), // filtered out
- NoDiagnostics("include/include.go"), // successfully builds
+ OnceMet(
+ InitialWorkspaceLoad,
+ EmptyOrNoDiagnostics("exclude/exclude.go"), // filtered out
+ EmptyOrNoDiagnostics("include/include.go"), // successfully builds
+ ),
)
})
}
diff --git a/gopls/internal/regtest/workspace/workspace_test.go b/gopls/internal/regtest/workspace/workspace_test.go
index 35ea6b9..0028f84 100644
--- a/gopls/internal/regtest/workspace/workspace_test.go
+++ b/gopls/internal/regtest/workspace/workspace_test.go
@@ -1172,11 +1172,8 @@
`
Run(t, ws, func(t *testing.T, env *Env) {
env.OpenFile("b/main.go")
- env.Await(
- OnceMet(
- env.DoneWithOpen(),
- NoDiagnostics("a/main.go"),
- ),
+ env.AfterChange(
+ EmptyOrNoDiagnostics("a/main.go"),
)
env.OpenFile("a/main.go")
env.Await(