| // Copyright 2020 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 regtest |
| |
| import ( |
| "testing" |
| |
| "golang.org/x/tools/internal/lsp/fake" |
| ) |
| |
| const symbolSetup = ` |
| -- go.mod -- |
| module mod.com |
| |
| go 1.12 |
| -- main.go -- |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| fmt.Println(Message) |
| } |
| -- const.go -- |
| package main |
| |
| const Message = "Hello World." |
| ` |
| |
| // TestSymbolPos tests that, at a basic level, we get the correct position |
| // information for symbols matches that are returned. |
| func TestSymbolPos(t *testing.T) { |
| matcher := "caseSensitive" |
| opts := []RunOption{ |
| WithEditorConfig(fake.EditorConfig{SymbolMatcher: &matcher}), |
| } |
| |
| runner.Run(t, symbolSetup, func(t *testing.T, env *Env) { |
| res := env.Symbol("main") |
| exp := &expSymbolInformation{ |
| Name: pString("main"), |
| Location: &expLocation{ |
| Path: pString("main.go"), |
| Range: &expRange{ |
| Start: &expPos{ |
| Line: pInt(4), |
| Column: pInt(5), |
| }, |
| }, |
| }, |
| } |
| if !exp.matchAgainst(res) { |
| t.Fatalf("failed to find match for main function") |
| } |
| }, opts...) |
| } |