mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
use a golden file for the expected test counts
This makes it much easier to keep them up to date. It is also less fragile against accidental changes. Change-Id: If119f8527c0896d210650859960e77f3e0fa5a99 Reviewed-on: https://go-review.googlesource.com/c/tools/+/197505 Run-TryBot: Ian Cottrell <iancottrell@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
This commit is contained in:
parent
a8d5d34286
commit
69890759d9
23
internal/lsp/testdata/summary.txt.golden
vendored
Normal file
23
internal/lsp/testdata/summary.txt.golden
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
-- summary --
|
||||||
|
CompletionsCount = 169
|
||||||
|
CompletionSnippetCount = 36
|
||||||
|
UnimportedCompletionsCount = 1
|
||||||
|
DeepCompletionsCount = 5
|
||||||
|
FuzzyCompletionsCount = 6
|
||||||
|
RankedCompletionsCount = 1
|
||||||
|
CaseSensitiveCompletionsCount = 4
|
||||||
|
DiagnosticsCount = 21
|
||||||
|
FoldingRangesCount = 2
|
||||||
|
FormatCount = 6
|
||||||
|
ImportCount = 2
|
||||||
|
SuggestedFixCount = 1
|
||||||
|
DefinitionsCount = 37
|
||||||
|
TypeDefinitionsCount = 2
|
||||||
|
HighlightsCount = 2
|
||||||
|
ReferencesCount = 6
|
||||||
|
RenamesCount = 20
|
||||||
|
PrepareRenamesCount = 8
|
||||||
|
SymbolsCount = 1
|
||||||
|
SignaturesCount = 21
|
||||||
|
LinksCount = 4
|
||||||
|
|
@ -6,8 +6,10 @@
|
|||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/token"
|
"go/token"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -26,32 +28,6 @@ import (
|
|||||||
"golang.org/x/tools/internal/txtar"
|
"golang.org/x/tools/internal/txtar"
|
||||||
)
|
)
|
||||||
|
|
||||||
// We hardcode the expected number of test cases to ensure that all tests
|
|
||||||
// are being executed. If a test is added, this number must be changed.
|
|
||||||
const (
|
|
||||||
ExpectedCompletionsCount = 169
|
|
||||||
ExpectedCompletionSnippetCount = 36
|
|
||||||
ExpectedUnimportedCompletionsCount = 1
|
|
||||||
ExpectedDeepCompletionsCount = 5
|
|
||||||
ExpectedFuzzyCompletionsCount = 6
|
|
||||||
ExpectedCaseSensitiveCompletionsCount = 4
|
|
||||||
ExpectedRankedCompletionsCount = 1
|
|
||||||
ExpectedDiagnosticsCount = 21
|
|
||||||
ExpectedFormatCount = 6
|
|
||||||
ExpectedImportCount = 2
|
|
||||||
ExpectedSuggestedFixCount = 1
|
|
||||||
ExpectedDefinitionsCount = 39
|
|
||||||
ExpectedTypeDefinitionsCount = 2
|
|
||||||
ExpectedFoldingRangesCount = 2
|
|
||||||
ExpectedHighlightsCount = 2
|
|
||||||
ExpectedReferencesCount = 6
|
|
||||||
ExpectedRenamesCount = 20
|
|
||||||
ExpectedPrepareRenamesCount = 8
|
|
||||||
ExpectedSymbolsCount = 1
|
|
||||||
ExpectedSignaturesCount = 21
|
|
||||||
ExpectedLinksCount = 4
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
overlayFileSuffix = ".overlay"
|
overlayFileSuffix = ".overlay"
|
||||||
goldenFileSuffix = ".golden"
|
goldenFileSuffix = ".golden"
|
||||||
@ -347,176 +323,105 @@ func Load(t testing.TB, exporter packagestest.Exporter, dir string) *Data {
|
|||||||
|
|
||||||
func Run(t *testing.T, tests Tests, data *Data) {
|
func Run(t *testing.T, tests Tests, data *Data) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
checkData(t, data)
|
||||||
|
|
||||||
t.Run("Completion", func(t *testing.T) {
|
t.Run("Completion", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Completions) != ExpectedCompletionsCount {
|
|
||||||
t.Errorf("got %v completions expected %v", len(data.Completions), ExpectedCompletionsCount)
|
|
||||||
}
|
|
||||||
tests.Completion(t, data.Completions, data.CompletionItems)
|
tests.Completion(t, data.Completions, data.CompletionItems)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("CompletionSnippets", func(t *testing.T) {
|
t.Run("CompletionSnippets", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.CompletionSnippets) != ExpectedCompletionSnippetCount {
|
|
||||||
t.Errorf("got %v snippets expected %v", len(data.CompletionSnippets), ExpectedCompletionSnippetCount)
|
|
||||||
}
|
|
||||||
if len(data.CompletionSnippets) != ExpectedCompletionSnippetCount {
|
|
||||||
t.Errorf("got %v snippets expected %v", len(data.CompletionSnippets), ExpectedCompletionSnippetCount)
|
|
||||||
}
|
|
||||||
tests.CompletionSnippets(t, data.CompletionSnippets, data.CompletionItems)
|
tests.CompletionSnippets(t, data.CompletionSnippets, data.CompletionItems)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("UnimportedCompletion", func(t *testing.T) {
|
t.Run("UnimportedCompletion", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.UnimportedCompletions) != ExpectedUnimportedCompletionsCount {
|
|
||||||
t.Errorf("got %v unimported completions expected %v", len(data.UnimportedCompletions), ExpectedUnimportedCompletionsCount)
|
|
||||||
}
|
|
||||||
tests.UnimportedCompletions(t, data.UnimportedCompletions, data.CompletionItems)
|
tests.UnimportedCompletions(t, data.UnimportedCompletions, data.CompletionItems)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("DeepCompletion", func(t *testing.T) {
|
t.Run("DeepCompletion", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.DeepCompletions) != ExpectedDeepCompletionsCount {
|
|
||||||
t.Errorf("got %v deep completions expected %v", len(data.DeepCompletions), ExpectedDeepCompletionsCount)
|
|
||||||
}
|
|
||||||
tests.DeepCompletions(t, data.DeepCompletions, data.CompletionItems)
|
tests.DeepCompletions(t, data.DeepCompletions, data.CompletionItems)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("FuzzyCompletion", func(t *testing.T) {
|
t.Run("FuzzyCompletion", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.FuzzyCompletions) != ExpectedFuzzyCompletionsCount {
|
|
||||||
t.Errorf("got %v fuzzy completions expected %v", len(data.FuzzyCompletions), ExpectedFuzzyCompletionsCount)
|
|
||||||
}
|
|
||||||
tests.FuzzyCompletions(t, data.FuzzyCompletions, data.CompletionItems)
|
tests.FuzzyCompletions(t, data.FuzzyCompletions, data.CompletionItems)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("CaseSensitiveCompletion", func(t *testing.T) {
|
t.Run("CaseSensitiveCompletion", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.CaseSensitiveCompletions) != ExpectedCaseSensitiveCompletionsCount {
|
|
||||||
t.Errorf("got %v case sensitive completions expected %v", len(data.CaseSensitiveCompletions), ExpectedCaseSensitiveCompletionsCount)
|
|
||||||
}
|
|
||||||
tests.CaseSensitiveCompletions(t, data.CaseSensitiveCompletions, data.CompletionItems)
|
tests.CaseSensitiveCompletions(t, data.CaseSensitiveCompletions, data.CompletionItems)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("RankCompletions", func(t *testing.T) {
|
t.Run("RankCompletions", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.RankCompletions) != ExpectedRankedCompletionsCount {
|
|
||||||
t.Errorf("got %v fuzzy completions expected %v", len(data.RankCompletions), ExpectedRankedCompletionsCount)
|
|
||||||
}
|
|
||||||
tests.RankCompletions(t, data.RankCompletions, data.CompletionItems)
|
tests.RankCompletions(t, data.RankCompletions, data.CompletionItems)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Diagnostics", func(t *testing.T) {
|
t.Run("Diagnostics", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
diagnosticsCount := 0
|
|
||||||
for _, want := range data.Diagnostics {
|
|
||||||
diagnosticsCount += len(want)
|
|
||||||
}
|
|
||||||
if diagnosticsCount != ExpectedDiagnosticsCount {
|
|
||||||
t.Errorf("got %v diagnostics expected %v", diagnosticsCount, ExpectedDiagnosticsCount)
|
|
||||||
}
|
|
||||||
tests.Diagnostics(t, data.Diagnostics)
|
tests.Diagnostics(t, data.Diagnostics)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("FoldingRange", func(t *testing.T) {
|
t.Run("FoldingRange", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.FoldingRanges) != ExpectedFoldingRangesCount {
|
|
||||||
t.Errorf("got %v folding ranges expected %v", len(data.FoldingRanges), ExpectedFoldingRangesCount)
|
|
||||||
}
|
|
||||||
tests.FoldingRange(t, data.FoldingRanges)
|
tests.FoldingRange(t, data.FoldingRanges)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Format", func(t *testing.T) {
|
t.Run("Format", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Formats) != ExpectedFormatCount {
|
|
||||||
t.Errorf("got %v formats expected %v", len(data.Formats), ExpectedFormatCount)
|
|
||||||
}
|
|
||||||
tests.Format(t, data.Formats)
|
tests.Format(t, data.Formats)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Import", func(t *testing.T) {
|
t.Run("Import", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Imports) != ExpectedImportCount {
|
|
||||||
t.Errorf("got %v imports expected %v", len(data.Imports), ExpectedImportCount)
|
|
||||||
}
|
|
||||||
tests.Import(t, data.Imports)
|
tests.Import(t, data.Imports)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("SuggestedFix", func(t *testing.T) {
|
t.Run("SuggestedFix", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.SuggestedFixes) != ExpectedSuggestedFixCount {
|
|
||||||
t.Errorf("got %v suggested fixes expected %v", len(data.SuggestedFixes), ExpectedSuggestedFixCount)
|
|
||||||
}
|
|
||||||
tests.SuggestedFix(t, data.SuggestedFixes)
|
tests.SuggestedFix(t, data.SuggestedFixes)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Definition", func(t *testing.T) {
|
t.Run("Definition", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Definitions) != ExpectedDefinitionsCount {
|
|
||||||
t.Errorf("got %v definitions expected %v", len(data.Definitions), ExpectedDefinitionsCount)
|
|
||||||
}
|
|
||||||
tests.Definition(t, data.Definitions)
|
tests.Definition(t, data.Definitions)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Highlight", func(t *testing.T) {
|
t.Run("Highlight", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Highlights) != ExpectedHighlightsCount {
|
|
||||||
t.Errorf("got %v highlights expected %v", len(data.Highlights), ExpectedHighlightsCount)
|
|
||||||
}
|
|
||||||
tests.Highlight(t, data.Highlights)
|
tests.Highlight(t, data.Highlights)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("References", func(t *testing.T) {
|
t.Run("References", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.References) != ExpectedReferencesCount {
|
|
||||||
t.Errorf("got %v references expected %v", len(data.References), ExpectedReferencesCount)
|
|
||||||
}
|
|
||||||
tests.Reference(t, data.References)
|
tests.Reference(t, data.References)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Renames", func(t *testing.T) {
|
t.Run("Renames", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Renames) != ExpectedRenamesCount {
|
|
||||||
t.Errorf("got %v renames expected %v", len(data.Renames), ExpectedRenamesCount)
|
|
||||||
}
|
|
||||||
tests.Rename(t, data.Renames)
|
tests.Rename(t, data.Renames)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("PrepareRenames", func(t *testing.T) {
|
t.Run("PrepareRenames", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.PrepareRenames) != ExpectedPrepareRenamesCount {
|
|
||||||
t.Errorf("got %v prepare renames expected %v", len(data.PrepareRenames), ExpectedPrepareRenamesCount)
|
|
||||||
}
|
|
||||||
|
|
||||||
tests.PrepareRename(t, data.PrepareRenames)
|
tests.PrepareRename(t, data.PrepareRenames)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Symbols", func(t *testing.T) {
|
t.Run("Symbols", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Symbols) != ExpectedSymbolsCount {
|
|
||||||
t.Errorf("got %v symbols expected %v", len(data.Symbols), ExpectedSymbolsCount)
|
|
||||||
}
|
|
||||||
tests.Symbol(t, data.Symbols)
|
tests.Symbol(t, data.Symbols)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("SignatureHelp", func(t *testing.T) {
|
t.Run("SignatureHelp", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
if len(data.Signatures) != ExpectedSignaturesCount {
|
|
||||||
t.Errorf("got %v signatures expected %v", len(data.Signatures), ExpectedSignaturesCount)
|
|
||||||
}
|
|
||||||
tests.SignatureHelp(t, data.Signatures)
|
tests.SignatureHelp(t, data.Signatures)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Link", func(t *testing.T) {
|
t.Run("Link", func(t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
linksCount := 0
|
|
||||||
for _, want := range data.Links {
|
|
||||||
linksCount += len(want)
|
|
||||||
}
|
|
||||||
if linksCount != ExpectedLinksCount {
|
|
||||||
t.Errorf("got %v links expected %v", linksCount, ExpectedLinksCount)
|
|
||||||
}
|
|
||||||
tests.Link(t, data.Links)
|
tests.Link(t, data.Links)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -535,6 +440,57 @@ func Run(t *testing.T, tests Tests, data *Data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkData(t *testing.T, data *Data) {
|
||||||
|
buf := &bytes.Buffer{}
|
||||||
|
diagnosticsCount := 0
|
||||||
|
for _, want := range data.Diagnostics {
|
||||||
|
diagnosticsCount += len(want)
|
||||||
|
}
|
||||||
|
linksCount := 0
|
||||||
|
for _, want := range data.Links {
|
||||||
|
linksCount += len(want)
|
||||||
|
}
|
||||||
|
definitionCount := 0
|
||||||
|
typeDefinitionCount := 0
|
||||||
|
for _, d := range data.Definitions {
|
||||||
|
if d.IsType {
|
||||||
|
typeDefinitionCount++
|
||||||
|
} else {
|
||||||
|
definitionCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(buf, "CompletionsCount = %v\n", len(data.Completions))
|
||||||
|
fmt.Fprintf(buf, "CompletionSnippetCount = %v\n", len(data.CompletionSnippets))
|
||||||
|
fmt.Fprintf(buf, "UnimportedCompletionsCount = %v\n", len(data.UnimportedCompletions))
|
||||||
|
fmt.Fprintf(buf, "DeepCompletionsCount = %v\n", len(data.DeepCompletions))
|
||||||
|
fmt.Fprintf(buf, "FuzzyCompletionsCount = %v\n", len(data.FuzzyCompletions))
|
||||||
|
fmt.Fprintf(buf, "RankedCompletionsCount = %v\n", len(data.RankCompletions))
|
||||||
|
fmt.Fprintf(buf, "CaseSensitiveCompletionsCount = %v\n", len(data.CaseSensitiveCompletions))
|
||||||
|
fmt.Fprintf(buf, "DiagnosticsCount = %v\n", diagnosticsCount)
|
||||||
|
fmt.Fprintf(buf, "FoldingRangesCount = %v\n", len(data.FoldingRanges))
|
||||||
|
fmt.Fprintf(buf, "FormatCount = %v\n", len(data.Formats))
|
||||||
|
fmt.Fprintf(buf, "ImportCount = %v\n", len(data.Imports))
|
||||||
|
fmt.Fprintf(buf, "SuggestedFixCount = %v\n", len(data.SuggestedFixes))
|
||||||
|
fmt.Fprintf(buf, "DefinitionsCount = %v\n", definitionCount)
|
||||||
|
fmt.Fprintf(buf, "TypeDefinitionsCount = %v\n", typeDefinitionCount)
|
||||||
|
fmt.Fprintf(buf, "HighlightsCount = %v\n", len(data.Highlights))
|
||||||
|
fmt.Fprintf(buf, "ReferencesCount = %v\n", len(data.References))
|
||||||
|
fmt.Fprintf(buf, "RenamesCount = %v\n", len(data.Renames))
|
||||||
|
fmt.Fprintf(buf, "PrepareRenamesCount = %v\n", len(data.PrepareRenames))
|
||||||
|
fmt.Fprintf(buf, "SymbolsCount = %v\n", len(data.Symbols))
|
||||||
|
fmt.Fprintf(buf, "SignaturesCount = %v\n", len(data.Signatures))
|
||||||
|
fmt.Fprintf(buf, "LinksCount = %v\n", linksCount)
|
||||||
|
|
||||||
|
want := string(data.Golden("summary", "summary.txt", func() ([]byte, error) {
|
||||||
|
return buf.Bytes(), nil
|
||||||
|
}))
|
||||||
|
got := buf.String()
|
||||||
|
if want != got {
|
||||||
|
t.Errorf("test summary does not match, want\n%s\ngot:\n%s", want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (data *Data) Mapper(uri span.URI) (*protocol.ColumnMapper, error) {
|
func (data *Data) Mapper(uri span.URI) (*protocol.ColumnMapper, error) {
|
||||||
data.mappersMu.Lock()
|
data.mappersMu.Lock()
|
||||||
defer data.mappersMu.Unlock()
|
defer data.mappersMu.Unlock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user