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  }