blob: 5389664c462db51e354dd27ac25817d8fd55383b [file] [log] [blame]
// Copyright 2019 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 cmd_test
import (
"io/ioutil"
"os"
"strings"
"testing"
"golang.org/x/tools/go/packages/packagestest"
"golang.org/x/tools/internal/lsp/cmd"
"golang.org/x/tools/internal/lsp/tests"
)
var isRace = false
type runner struct {
data *tests.Data
app *cmd.Application
}
func TestCommandLine(t *testing.T) {
packagestest.TestAll(t, testCommandLine)
}
func testCommandLine(t *testing.T, exporter packagestest.Exporter) {
data := tests.Load(t, exporter, "../testdata")
defer data.Exported.Cleanup()
r := &runner{
data: data,
app: &cmd.Application{
Config: *data.Exported.Config,
},
}
tests.Run(t, r, data)
}
func (r *runner) Completion(t *testing.T, data tests.Completions, items tests.CompletionItems) {
//TODO: add command line completions tests when it works
}
func (r *runner) Format(t *testing.T, data tests.Formats) {
//TODO: add command line formatting tests when it works
}
func (r *runner) Highlight(t *testing.T, data tests.Highlights) {
//TODO: add command line highlight tests when it works
}
func (r *runner) Symbol(t *testing.T, data tests.Symbols) {
//TODO: add command line symbol tests when it works
}
func (r *runner) Signature(t *testing.T, data tests.Signatures) {
//TODO: add command line signature tests when it works
}
func captureStdOut(t testing.TB, f func()) string {
r, out, err := os.Pipe()
if err != nil {
t.Fatal(err)
}
old := os.Stdout
defer func() {
os.Stdout = old
out.Close()
r.Close()
}()
os.Stdout = out
f()
out.Close()
data, err := ioutil.ReadAll(r)
if err != nil {
t.Fatal(err)
}
return strings.TrimSpace(string(data))
}