X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fgolang.org%2Fx%2Ftools%40v0.0.0-20201105173854-bc9fc8d8c4bc%2Fgo%2Fanalysis%2Fanalysistest%2Fanalysistest_test.go;fp=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fgolang.org%2Fx%2Ftools%40v0.0.0-20201105173854-bc9fc8d8c4bc%2Fgo%2Fanalysis%2Fanalysistest%2Fanalysistest_test.go;h=e1ce85798556ddfe8ecd5f5e92c7e39580e61f03;hb=4d07c77cf4d78cab8639e13ddc3c22495e585b0b;hp=0000000000000000000000000000000000000000;hpb=b3950616b54221c40a7dab9099bda675007e5b6e;p=dotfiles%2F.git diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/go/analysis/analysistest/analysistest_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/go/analysis/analysistest/analysistest_test.go new file mode 100644 index 00000000..e1ce8579 --- /dev/null +++ b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/go/analysis/analysistest/analysistest_test.go @@ -0,0 +1,158 @@ +package analysistest_test + +import ( + "fmt" + "log" + "os" + "reflect" + "strings" + "testing" + + "golang.org/x/tools/go/analysis/analysistest" + "golang.org/x/tools/go/analysis/passes/findcall" + "golang.org/x/tools/internal/testenv" +) + +func init() { + // This test currently requires GOPATH mode. + // Explicitly disabling module mode should suffice, but + // we'll also turn off GOPROXY just for good measure. + if err := os.Setenv("GO111MODULE", "off"); err != nil { + log.Fatal(err) + } + if err := os.Setenv("GOPROXY", "off"); err != nil { + log.Fatal(err) + } +} + +// TestTheTest tests the analysistest testing infrastructure. +func TestTheTest(t *testing.T) { + testenv.NeedsTool(t, "go") + + // We'll simulate a partly failing test of the findcall analysis, + // which (by default) reports calls to functions named 'println'. + findcall.Analyzer.Flags.Set("name", "println") + + filemap := map[string]string{ + "a/b.go": `package main // want package:"found" + +func main() { + // The expectation is ill-formed: + print() // want: "diagnostic" + print() // want foo"fact" + print() // want foo: + print() // want "\xZZ scan error" + + // A diagnostic is reported at this line, but the expectation doesn't match: + println("hello, world") // want "wrong expectation text" + + // An unexpected diagnostic is reported at this line: + println() // trigger an unexpected diagnostic + + // No diagnostic is reported at this line: + print() // want "unsatisfied expectation" + + // OK + println("hello, world") // want "call of println" + + // OK /* */-form. + println("안녕, 세계") /* want "call of println" */ + + // OK (nested comment) + println("Γειά σου, Κόσμε") // some comment // want "call of println" + + // OK (nested comment in /**/) + println("你好,世界") /* some comment // want "call of println" */ + + // OK (multiple expectations on same line) + println(); println() // want "call of println(...)" "call of println(...)" +} + +// OK (facts and diagnostics on same line) +func println(...interface{}) { println() } // want println:"found" "call of println(...)" + +`, + "a/b.go.golden": `package main // want package:"found" + +func main() { + // The expectation is ill-formed: + print() // want: "diagnostic" + print() // want foo"fact" + print() // want foo: + print() // want "\xZZ scan error" + + // A diagnostic is reported at this line, but the expectation doesn't match: + println_TEST_("hello, world") // want "wrong expectation text" + + // An unexpected diagnostic is reported at this line: + println_TEST_() // trigger an unexpected diagnostic + + // No diagnostic is reported at this line: + print() // want "unsatisfied expectation" + + // OK + println_TEST_("hello, world") // want "call of println" + + // OK /* */-form. + println_TEST_("안녕, 세계") /* want "call of println" */ + + // OK (nested comment) + println_TEST_("Γειά σου, Κόσμε") // some comment // want "call of println" + + // OK (nested comment in /**/) + println_TEST_("你好,世界") /* some comment // want "call of println" */ + + // OK (multiple expectations on same line) + println_TEST_() + println_TEST_() // want "call of println(...)" "call of println(...)" +} + +// OK (facts and diagnostics on same line) +func println(...interface{}) { println_TEST_() } // want println:"found" "call of println(...)" +`, + "a/b_test.go": `package main + +// Test file shouldn't mess with things (issue #40574) +`, + } + dir, cleanup, err := analysistest.WriteFiles(filemap) + if err != nil { + t.Fatal(err) + } + defer cleanup() + + var got []string + t2 := errorfunc(func(s string) { got = append(got, s) }) // a fake *testing.T + analysistest.RunWithSuggestedFixes(t2, dir, findcall.Analyzer, "a") + + want := []string{ + `a/b.go:5: in 'want' comment: unexpected ":"`, + `a/b.go:6: in 'want' comment: got String after foo, want ':'`, + `a/b.go:7: in 'want' comment: got EOF, want regular expression`, + `a/b.go:8: in 'want' comment: invalid char escape`, + `a/b.go:11:9: diagnostic "call of println(...)" does not match pattern "wrong expectation text"`, + `a/b.go:14:9: unexpected diagnostic: call of println(...)`, + `a/b.go:11: no diagnostic was reported matching "wrong expectation text"`, + `a/b.go:17: no diagnostic was reported matching "unsatisfied expectation"`, + // duplicate copies of each message from the test package (see issue #40574) + `a/b.go:5: in 'want' comment: unexpected ":"`, + `a/b.go:6: in 'want' comment: got String after foo, want ':'`, + `a/b.go:7: in 'want' comment: got EOF, want regular expression`, + `a/b.go:8: in 'want' comment: invalid char escape`, + `a/b.go:11:9: diagnostic "call of println(...)" does not match pattern "wrong expectation text"`, + `a/b.go:14:9: unexpected diagnostic: call of println(...)`, + `a/b.go:11: no diagnostic was reported matching "wrong expectation text"`, + `a/b.go:17: no diagnostic was reported matching "unsatisfied expectation"`, + } + if !reflect.DeepEqual(got, want) { + t.Errorf("got:\n%s\nwant:\n%s", + strings.Join(got, "\n"), + strings.Join(want, "\n")) + } +} + +type errorfunc func(string) + +func (f errorfunc) Errorf(format string, args ...interface{}) { + f(fmt.Sprintf(format, args...)) +}