mirror of https://github.com/golang/go.git
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
// Copyright 2022 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 workspace
|
|
|
|
import (
|
|
"testing"
|
|
|
|
. "golang.org/x/tools/gopls/internal/lsp/regtest"
|
|
)
|
|
|
|
// Test that setting go.work via environment variables or settings works.
|
|
func TestUseGoWorkOutsideTheWorkspace(t *testing.T) {
|
|
const files = `
|
|
-- work/a/go.mod --
|
|
module a.com
|
|
|
|
go 1.12
|
|
-- work/a/a.go --
|
|
package a
|
|
-- work/b/go.mod --
|
|
module b.com
|
|
|
|
go 1.12
|
|
-- work/b/b.go --
|
|
package b
|
|
|
|
func _() {
|
|
x := 1 // unused
|
|
}
|
|
-- config/go.work --
|
|
go 1.18
|
|
|
|
use (
|
|
$SANDBOX_WORKDIR/work/a
|
|
$SANDBOX_WORKDIR/work/b
|
|
)
|
|
`
|
|
|
|
WithOptions(
|
|
EnvVars{"GOWORK": "$SANDBOX_WORKDIR/config/go.work"},
|
|
).Run(t, files, func(t *testing.T, env *Env) {
|
|
// When we have an explicit GOWORK set, we should get a file watch request.
|
|
env.Await(FileWatchMatching(`config.go\.work`))
|
|
// Even though work/b is not open, we should get its diagnostics as it is
|
|
// included in the workspace.
|
|
env.OpenFile("work/a/a.go")
|
|
env.Await(
|
|
OnceMet(
|
|
env.DoneWithOpen(),
|
|
env.DiagnosticAtRegexpWithMessage("work/b/b.go", "x := 1", "not used"),
|
|
),
|
|
)
|
|
})
|
|
}
|