X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;ds=sidebyside;f=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fgolang.org%2Fx%2Ftools%2Fgopls%40v0.5.2%2Finternal%2Fregtest%2Fcompletion_bench_test.go;fp=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fgolang.org%2Fx%2Ftools%2Fgopls%40v0.5.2%2Finternal%2Fregtest%2Fcompletion_bench_test.go;h=0000000000000000000000000000000000000000;hb=3ddadb3c98564791f0ac36cb39771d844a63dc91;hp=267eeb6b3269e65744ebe3af7d6ae66e4da3a357;hpb=5f797af6612ed10887189b47a1efc2f915586e59;p=dotfiles%2F.git diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools/gopls@v0.5.2/internal/regtest/completion_bench_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools/gopls@v0.5.2/internal/regtest/completion_bench_test.go deleted file mode 100644 index 267eeb6b..00000000 --- a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools/gopls@v0.5.2/internal/regtest/completion_bench_test.go +++ /dev/null @@ -1,200 +0,0 @@ -// 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 ( - "flag" - "fmt" - "runtime" - "strings" - "testing" - - "golang.org/x/tools/internal/lsp/fake" -) - -// dummyCompletionFunction to test manually configured completion using CLI. -func dummyCompletionFunction() { const s = "placeholder"; fmt.Printf("%s", s) } - -type completionBenchOptions struct { - workdir, file, locationRegexp string - printResults bool - // hook to run edits before initial completion, not supported for manually - // configured completions. - preCompletionEdits func(*Env) -} - -var completionOptions = completionBenchOptions{} - -func init() { - flag.StringVar(&completionOptions.workdir, "completion_workdir", "", "directory to run completion benchmarks in") - flag.StringVar(&completionOptions.file, "completion_file", "", "relative path to the file to complete in") - flag.StringVar(&completionOptions.locationRegexp, "completion_regexp", "", "regexp location to complete at") - flag.BoolVar(&completionOptions.printResults, "completion_print_results", false, "whether to print completion results") -} - -func benchmarkCompletion(options completionBenchOptions, t *testing.T) { - if completionOptions.workdir == "" { - t.Skip("-completion_workdir not configured, skipping benchmark") - } - - opts := stressTestOptions(options.workdir) - - // Completion gives bad results if IWL is not yet complete, so we must await - // it first (and therefore need hooks). - opts = append(opts, SkipHooks(false)) - - withOptions(opts...).run(t, "", func(t *testing.T, env *Env) { - env.OpenFile(options.file) - - // Run edits required for this completion. - if options.preCompletionEdits != nil { - options.preCompletionEdits(env) - } - - // Add a comment as a marker at the start of the file, we'll replace - // this in every iteration to trigger type checking and hence emulate - // a more real world scenario. - env.EditBuffer(options.file, fake.Edit{Text: "// 0\n"}) - - // Run a completion to make sure the system is warm. - pos := env.RegexpSearch(options.file, options.locationRegexp) - completions := env.Completion(options.file, pos) - - if options.printResults { - fmt.Println("Results:") - for i := 0; i < len(completions.Items); i++ { - fmt.Printf("\t%d. %v\n", i, completions.Items[i]) - } - } - - results := testing.Benchmark(func(b *testing.B) { - for i := 0; i < b.N; i++ { - b.StopTimer() - env.RegexpReplace(options.file, `\/\/ \d*`, fmt.Sprintf("// %d", i)) - - // explicitly garbage collect since we don't want to count this - // time in completion benchmarks. - if i%10 == 0 { - runtime.GC() - } - b.StartTimer() - - env.Completion(options.file, pos) - } - }) - - printBenchmarkResults(results) - }) -} - -// endPosInBuffer returns the position for last character in the buffer for -// the given file. -func endPosInBuffer(env *Env, name string) fake.Pos { - buffer := env.Editor.BufferText(name) - lines := strings.Split(buffer, "\n") - numLines := len(lines) - - return fake.Pos{ - Line: numLines - 1, - Column: len([]rune(lines[numLines-1])), - } -} - -// Benchmark completion at a specified file and location. When no CLI options -// are specified, this test is skipped. -// To Run (from x/tools/gopls) against the dummy function above: -// go test -v ./internal/regtest -run=TestBenchmarkConfiguredCompletion -// -completion_workdir="$HOME/Developer/tools" -// -completion_file="gopls/internal/regtest/completion_bench_test.go" -// -completion_regexp="dummyCompletionFunction.*fmt\.Printf\(\"%s\", s(\))" -func TestBenchmarkConfiguredCompletion(t *testing.T) { - benchmarkCompletion(completionOptions, t) -} - -// To run (from x/tools/gopls): -// go test -v ./internal/regtest -run TestBenchmark<>Completion -// -completion_workdir="$HOME/Developer/tools" -// where <> is one of the tests below. completion_workdir should be path to -// x/tools on your system. - -// Benchmark struct completion in tools codebase. -func TestBenchmarkStructCompletion(t *testing.T) { - file := "internal/lsp/cache/session.go" - - preCompletionEdits := func(env *Env) { - env.OpenFile(file) - originalBuffer := env.Editor.BufferText(file) - env.EditBuffer(file, fake.Edit{ - End: endPosInBuffer(env, file), - Text: originalBuffer + "\nvar testVariable map[string]bool = Session{}.\n", - }) - } - - benchmarkCompletion(completionBenchOptions{ - workdir: completionOptions.workdir, - file: file, - locationRegexp: `var testVariable map\[string\]bool = Session{}(\.)`, - preCompletionEdits: preCompletionEdits, - printResults: completionOptions.printResults, - }, t) -} - -// Benchmark import completion in tools codebase. -func TestBenchmarkImportCompletion(t *testing.T) { - benchmarkCompletion(completionBenchOptions{ - workdir: completionOptions.workdir, - file: "internal/lsp/source/completion/completion.go", - locationRegexp: `go\/()`, - printResults: completionOptions.printResults, - }, t) -} - -// Benchmark slice completion in tools codebase. -func TestBenchmarkSliceCompletion(t *testing.T) { - file := "internal/lsp/cache/session.go" - - preCompletionEdits := func(env *Env) { - env.OpenFile(file) - originalBuffer := env.Editor.BufferText(file) - env.EditBuffer(file, fake.Edit{ - End: endPosInBuffer(env, file), - Text: originalBuffer + "\nvar testVariable []byte = \n", - }) - } - - benchmarkCompletion(completionBenchOptions{ - workdir: completionOptions.workdir, - file: file, - locationRegexp: `var testVariable \[\]byte (=)`, - preCompletionEdits: preCompletionEdits, - printResults: completionOptions.printResults, - }, t) -} - -// Benchmark deep completion in function call in tools codebase. -func TestBenchmarkFuncDeepCompletion(t *testing.T) { - file := "internal/lsp/source/completion/completion.go" - fileContent := ` -func (c *completer) _() { - c.inference.kindMatches(c.) -} -` - preCompletionEdits := func(env *Env) { - env.OpenFile(file) - originalBuffer := env.Editor.BufferText(file) - env.EditBuffer(file, fake.Edit{ - End: endPosInBuffer(env, file), - Text: originalBuffer + fileContent, - }) - } - - benchmarkCompletion(completionBenchOptions{ - workdir: completionOptions.workdir, - file: file, - locationRegexp: `func \(c \*completer\) _\(\) {\n\tc\.inference\.kindMatches\((c)`, - preCompletionEdits: preCompletionEdits, - printResults: completionOptions.printResults, - }, t) -}