Files
numscript/internal/lsp/object_stream_test.go
Maxence MaireauxGitHubcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
3dc4fdbe11 feat: Use Nix & Shipfox & Just for DevXP (#77)
* feat: add Nix flake for Go 1.23 development environment

* feat: add .envrc and Justfile for environment setup; remove obsolete scripts

* feat: add antlr to Nix flake dependencies

* chore: update ANTLR version in generated files to 4.13.2

* feat: add GitHub Actions for environment setup and release management; remove obsolete workflows

* chore: remove SPEAKEASY_API_KEY from workflows to streamline environment variables

* refactor: simplify range checks in hover functions and update variable end position

* refactor: improve error handling and logging across multiple files

* feat: Update flake.nix

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-07-15 15:15:31 +02:00

87 lines
1.8 KiB
Go

package lsp_test
import (
"bytes"
"encoding/json"
"fmt"
"io"
"testing"
"github.com/formancehq/numscript/internal/jsonrpc2"
"github.com/formancehq/numscript/internal/lsp"
"github.com/stretchr/testify/require"
)
func TestObjectStreamWrite(t *testing.T) {
out := NewRwCloser()
stream := lsp.NewLsObjectStream(NewRwCloser(), out)
msg := jsonrpc2.Request{
Method: "updatedateConfig",
Params: []byte("{}"),
}
strMsg, _ := json.Marshal(msg)
err := stream.WriteMessage(msg)
require.Nil(t, err)
expectedMsg := fmt.Sprintf("Content-Length: %d\r\n\r\n%s", len(strMsg), strMsg)
bs := make([]byte, len(expectedMsg))
_, err = out.Read(bs)
require.Nil(t, err)
require.Equal(t, []byte(expectedMsg), bs)
}
func TestObjectStreamRead(t *testing.T) {
in := NewRwCloser()
stream := lsp.NewLsObjectStream(in, NewRwCloser())
sentMsg := jsonrpc2.Request{
Method: "updatedateConfig",
Params: []byte("{}"),
}
strMsg, _ := json.Marshal(sentMsg)
_, err := fmt.Fprintf(in, "Content-Length: %d\r\n\r\n%s", len(strMsg), strMsg)
require.NoError(t, err)
receivedMsg, err := stream.ReadMessage()
require.Nil(t, err)
require.Equal(t, receivedMsg, sentMsg)
}
func TestObjectStreamSimmetric(t *testing.T) {
in := NewRwCloser()
out := NewRwCloser()
serverStream := lsp.NewLsObjectStream(in, out)
clientStream := lsp.NewLsObjectStream(out, in)
msg := jsonrpc2.Request{Method: "got-data", Params: []byte("{}")}
err := serverStream.WriteMessage(msg)
require.Nil(t, err)
obj, err := clientStream.ReadMessage()
require.Nil(t, err)
require.Equal(t, msg, obj)
}
type MockReadWriteCloser struct {
io.ReadWriter
}
func NewRwCloser() MockReadWriteCloser {
return MockReadWriteCloser{ReadWriter: &bytes.Buffer{}}
}
func (c MockReadWriteCloser) Close() error {
return nil
}