1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
// Copyright 2021 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 lsprpc_test
import (
"context"
"testing"
"golang.org/x/tools/gopls/internal/lsp/protocol"
. "golang.org/x/tools/gopls/internal/lsp/lsprpc"
)
func TestCommandInterceptor(t *testing.T) {
const command = "foo"
caught := false
intercept := func(_ *protocol.ExecuteCommandParams) (interface{}, error) {
caught = true
return map[string]interface{}{}, nil
}
ctx := context.Background()
env := new(TestEnv)
defer env.Shutdown(t)
mw := CommandInterceptor(command, intercept)
l, _ := env.serve(ctx, t, mw(noopBinder))
conn := env.dial(ctx, t, l.Dialer(), noopBinder, false)
params := &protocol.ExecuteCommandParams{
Command: command,
}
var res interface{}
err := conn.Call(ctx, "workspace/executeCommand", params).Await(ctx, &res)
if err != nil {
t.Fatal(err)
}
if !caught {
t.Errorf("workspace/executeCommand was not intercepted")
}
}
|