v1 stdio buffer limit (#2239)

This commit is contained in:
Konstantin Konstantinov 2026-06-02 20:08:41 +03:00 • committed by GitHub
commit e7ee57c2f3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -100,3 +100,51 @@ test('should read multiple messages', async () => {
await finished;
expect(readMessages).toEqual(messages);
});
test('should respect custom maxBufferSize option', async () => {
const server = new StdioServerTransport(input, output, { maxBufferSize: 100 });
let receivedError: Error | undefined;
server.onerror = err => {
receivedError = err;
};
let closeCount = 0;
server.onclose = () => {
closeCount++;
};
await server.start();
// Push 101 bytes without a newline — exceeds the 100-byte limit
input.push(Buffer.alloc(101, 0x41));
await new Promise(resolve => setTimeout(resolve, 10));
expect(receivedError?.message).toMatch(/ReadBuffer exceeded maximum size/);
expect(closeCount).toBe(1);
});
test('should fire onerror and close when ReadBuffer overflows', async () => {
const server = new StdioServerTransport(input, output);
let receivedError: Error | undefined;
server.onerror = err => {
receivedError = err;
};
let closeCount = 0;
server.onclose = () => {
closeCount++;
};
await server.start();
// Push data exceeding the default 10 MB limit without a newline
const chunk = Buffer.alloc(11 * 1024 * 1024, 0x41);
input.push(chunk);
// Allow the close() promise to settle
await new Promise(resolve => setTimeout(resolve, 10));
expect(receivedError?.message).toMatch(/ReadBuffer exceeded maximum size/);
expect(closeCount).toBe(1);
});