// 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" "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, snippets tests.CompletionSnippets, items tests.CompletionItems) { //TODO: add command line completions 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 string(data) }