diff --git a/src/client/stdio.test.ts b/src/client/stdio.test.ts index 8c3786eb..2e4d92c2 100644 --- a/src/client/stdio.test.ts +++ b/src/client/stdio.test.ts @@ -1,5 +1,14 @@ import { JSONRPCMessage } from "../types.js"; -import { StdioClientTransport, getDefaultServerParameters } from "./stdio.js"; +import { StdioClientTransport, StdioServerParameters } from "./stdio.js"; + +// Configure default server parameters based on OS +// Uses 'more' command for Windows and 'tee' command for Unix/Linux +const getDefaultServerParameters = (): StdioServerParameters => { + if (process.platform === "win32") { + return { command: "more" }; + } + return { command: "/usr/bin/tee" }; +}; const serverParameters = getDefaultServerParameters(); diff --git a/src/client/stdio.ts b/src/client/stdio.ts index a34e8f19..62292ce1 100644 --- a/src/client/stdio.ts +++ b/src/client/stdio.ts @@ -39,15 +39,6 @@ export type StdioServerParameters = { cwd?: string; }; -// Configure default server parameters based on OS -// Uses 'more' command for Windows and 'tee' command for Unix/Linux -export const getDefaultServerParameters = (): StdioServerParameters => { - if (process.platform === "win32") { - return { command: "more" }; - } - return { command: "/usr/bin/tee" }; -}; - /** * Environment variables to inherit by default, if an environment is not explicitly given. */ diff --git a/src/inMemory.test.ts b/src/inMemory.test.ts index 0b0d5fe5..baf43446 100644 --- a/src/inMemory.test.ts +++ b/src/inMemory.test.ts @@ -96,43 +96,10 @@ describe("InMemoryTransport", () => { }); test("should throw error when sending after close", async () => { - const [client, server] = InMemoryTransport.createLinkedPair(); - let clientError: Error | undefined; - let serverError: Error | undefined; - - client.onerror = (err) => { - clientError = err; - }; - - server.onerror = (err) => { - serverError = err; - }; - - await client.close(); - - // Attempt to send message from client + await clientTransport.close(); await expect( - client.send({ - jsonrpc: "2.0", - method: "test", - id: 1, - }), + clientTransport.send({ jsonrpc: "2.0", method: "test", id: 1 }), ).rejects.toThrow("Not connected"); - - // Attempt to send message from server - await expect( - server.send({ - jsonrpc: "2.0", - method: "test", - id: 2, - }), - ).rejects.toThrow("Not connected"); - - // Verify that both sides received errors - expect(clientError).toBeDefined(); - expect(clientError?.message).toBe("Not connected"); - expect(serverError).toBeDefined(); - expect(serverError?.message).toBe("Not connected"); }); test("should queue messages sent before start", async () => { @@ -151,65 +118,4 @@ describe("InMemoryTransport", () => { await serverTransport.start(); expect(receivedMessage).toEqual(message); }); - - describe("error handling", () => { - test("should trigger onerror when sending without connection", async () => { - const transport = new InMemoryTransport(); - let error: Error | undefined; - - transport.onerror = (err) => { - error = err; - }; - - await expect( - transport.send({ - jsonrpc: "2.0", - method: "test", - id: 1, - }), - ).rejects.toThrow("Not connected"); - - expect(error).toBeDefined(); - expect(error?.message).toBe("Not connected"); - }); - - test("should trigger onerror when sending after close", async () => { - const [client, server] = InMemoryTransport.createLinkedPair(); - let clientError: Error | undefined; - let serverError: Error | undefined; - - client.onerror = (err) => { - clientError = err; - }; - - server.onerror = (err) => { - serverError = err; - }; - - await client.close(); - - // Attempt to send message from client - await expect( - client.send({ - jsonrpc: "2.0", - method: "test", - id: 1, - }), - ).rejects.toThrow("Not connected"); - - // Attempt to send message from server - await expect( - server.send({ - jsonrpc: "2.0", - method: "test", - id: 2, - }), - ).rejects.toThrow("Not connected"); - - // Verify that both sides received errors - expect(clientError?.message).toBe("Not connected"); - expect(serverError).toBeDefined(); - expect(serverError?.message).toBe("Not connected"); - }); - }); }); diff --git a/src/inMemory.ts b/src/inMemory.ts index 056a4718..5dd6e81e 100644 --- a/src/inMemory.ts +++ b/src/inMemory.ts @@ -51,9 +51,7 @@ export class InMemoryTransport implements Transport { */ async send(message: JSONRPCMessage, options?: { relatedRequestId?: RequestId, authInfo?: AuthInfo }): Promise { if (!this._otherTransport) { - const error = new Error("Not connected"); - this.onerror?.(error); - throw error; + throw new Error("Not connected"); } if (this._otherTransport.onmessage) {