summaryrefslogtreecommitdiff
path: root/internal/lsp/transport_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-09-04 14:24:36 +0300
committerPaul Buetow <paul@buetow.org>2025-09-04 14:24:36 +0300
commitd68e5b3b188585fe234d0ce295ec7f054c8bad5f (patch)
tree974e067d9894f0da38513acdc27b56729b0f06e4 /internal/lsp/transport_test.go
parent3c322b7046669a77c276ce05469bfc2db0b446b2 (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.go27
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:])
+}
+