// 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 ( "fmt" "os" "path/filepath" "regexp" "runtime" "testing" "golang.org/x/tools/internal/lsp/cmd" cmdtest "golang.org/x/tools/internal/lsp/cmd/test" "golang.org/x/tools/internal/lsp/tests" "golang.org/x/tools/internal/testenv" ) func TestMain(m *testing.M) { testenv.ExitIfSmallMachine() os.Exit(m.Run()) } func TestCommandLine(t *testing.T) { cmdtest.TestCommandLine(t, "../testdata", tests.DefaultOptions) } func TestDefinitionHelpExample(t *testing.T) { // TODO: https://golang.org/issue/32794. t.Skip() if runtime.GOOS == "android" { t.Skip("not all source files are available on android") } dir, err := os.Getwd() if err != nil { t.Errorf("could not get wd: %v", err) return } ctx := tests.Context(t) ts := cmdtest.NewTestServer(ctx, nil) thisFile := filepath.Join(dir, "definition.go") baseArgs := []string{"query", "definition"} expect := regexp.MustCompile(`(?s)^[\w/\\:_-]+flag[/\\]flag.go:\d+:\d+-\d+: defined here as FlagSet struct {.*}$`) for _, query := range []string{ fmt.Sprintf("%v:%v:%v", thisFile, cmd.ExampleLine, cmd.ExampleColumn), fmt.Sprintf("%v:#%v", thisFile, cmd.ExampleOffset)} { args := append(baseArgs, query) r := cmdtest.NewRunner(nil, ctx, ts.Addr, nil) got, _ := r.NormalizeGoplsCmd(t, args...) if !expect.MatchString(got) { t.Errorf("test with %v\nexpected:\n%s\ngot:\n%s", args, expect, got) } } }