github.com/terraform-linters/tflint@v0.51.2-0.20240520175844-3750771571b6/integrationtest/langserver/initialize_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "github.com/google/go-cmp/cmp" 9 ) 10 11 func Test_initialize(t *testing.T) { 12 withinFixtureDir(t, "workdir", func(dir string) { 13 stdin, stdout, plugin := startServer(t, dir+"/.tflint.hcl") 14 defer plugin.Clean() 15 16 go func() { 17 fmt.Fprint(stdin, initializeRequest()) 18 fmt.Fprint(stdin, shutdownRequest()) 19 fmt.Fprint(stdin, exitRequest()) 20 }() 21 22 buf := new(bytes.Buffer) 23 if _, err := buf.ReadFrom(stdout); err != nil { 24 t.Fatal(err) 25 } 26 27 expected := initializeResponse() + emptyResponse() 28 if !cmp.Equal(expected, buf.String()) { 29 t.Fatalf("Diff: %s", cmp.Diff(expected, buf.String())) 30 } 31 }) 32 } 33 34 func initializeRequest() string { 35 return toJSONRPC2(`{"id":0,"method":"initialize","params":{},"jsonrpc":"2.0"}`) 36 } 37 38 func initializeResponse() string { 39 return toJSONRPC2(`{"id":0,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":1}}},"jsonrpc":"2.0"}`) 40 }