diff options
| author | Paul Buetow <paul@buetow.org> | 2025-09-04 14:24:36 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-09-04 14:24:36 +0300 |
| commit | d68e5b3b188585fe234d0ce295ec7f054c8bad5f (patch) | |
| tree | 974e067d9894f0da38513acdc27b56729b0f06e4 /internal/lsp/transport_test.go | |
| parent | 3c322b7046669a77c276ce05469bfc2db0b446b2 (diff) | |
tests(lsp): push coverage over 80%\n- Add init/trigger, chat history, document handler, transport readMessage, and rewrite resolve tests\n- Cover deferShowDocument and shutdown reply\n- Now ~81.2% coverage for internal/lsp
Diffstat (limited to 'internal/lsp/transport_test.go')
| -rw-r--r-- | internal/lsp/transport_test.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/internal/lsp/transport_test.go b/internal/lsp/transport_test.go new file mode 100644 index 0000000..0a01acd --- /dev/null +++ b/internal/lsp/transport_test.go @@ -0,0 +1,27 @@ +package lsp + +import ( + "bufio" + "bytes" + "testing" +) + +func TestReadMessage_ParsesContentLength(t *testing.T) { + body := []byte(`{"jsonrpc":"2.0","id":1,"method":"initialize"}`) + frame := []byte("Content-Length: ") + frame = append(frame, []byte(stringInt(len(body)))...) + frame = append(frame, []byte("\r\n\r\n")...) + frame = append(frame, body...) + s := &Server{in: bufio.NewReader(bytes.NewReader(frame))} + got, err := s.readMessage() + if err != nil || string(got) != string(body) { t.Fatalf("readMessage failed: %v %q", err, string(got)) } +} + +func stringInt(n int) string { + if n == 0 { return "0" } + var b [20]byte + i := len(b) + for n > 0 { i--; b[i] = byte('0' + n%10); n /= 10 } + return string(b[i:]) +} + |
