File
Blob: src/workerd/api/node/tests/process-stdio-fs-nodejs-test.js
| 1 | // Copyright (c) 2025 Cloudflare, Inc. |
| 2 | // Licensed under the Apache 2.0 license found in the LICENSE file or at: |
| 3 | // https://opensource.org/licenses/Apache-2.0 |
| 4 | import { writeSync, ReadStream } from 'node:fs'; |
| 5 | import { Buffer } from 'node:buffer'; |
| 6 | import { Readable } from 'node:stream'; |
| 7 | import assert from 'node:assert'; |
| 8 | |
| 9 | export const processStdioPropertiesTest = { |
| 10 | test() { |
| 11 | assert.strictEqual(process.stdin.fd, 0, 'stdin should have fd 0'); |
| 12 | assert( |
| 13 | process.stdin instanceof Readable, |
| 14 | 'stdin should be instance of Readable' |
| 15 | ); |
| 16 | assert( |
| 17 | process.stdin instanceof ReadStream, |
| 18 | 'stdin should be instance of ReadStream' |
| 19 | ); |
| 20 | }, |
| 21 | }; |
| 22 | |
| 23 | export const fdBasedOperationsTest = { |
| 24 | test() { |
| 25 | const message = 'Direct writeSync to stdout\n'; |
| 26 | const buffer = Buffer.from(message); |
| 27 | const bytesWritten = writeSync(1, buffer); |
| 28 | assert.strictEqual( |
| 29 | bytesWritten, |
| 30 | buffer.length, |
| 31 | 'writeSync should return correct byte count' |
| 32 | ); |
| 33 | |
| 34 | const errorMessage = 'Direct writeSync to stderr\n'; |
| 35 | const errorBuffer = Buffer.from(errorMessage); |
| 36 | const errorBytesWritten = writeSync(2, errorBuffer); |
| 37 | assert.strictEqual( |
| 38 | errorBytesWritten, |
| 39 | errorBuffer.length, |
| 40 | 'writeSync to stderr should return correct byte count' |
| 41 | ); |
| 42 | }, |
| 43 | }; |
| 44 | |
| 45 | export const largeWriteTruncationTest = { |
| 46 | test() { |
| 47 | const largeBuffer = Buffer.alloc(4001 * 5, 'A'.repeat(4000) + '\n'); |
| 48 | largeBuffer[0] = 66; |
| 49 | largeBuffer[4001 * 5 - 1] = 67; |
| 50 | const bytesWritten = writeSync(1, largeBuffer); |
| 51 | |
| 52 | assert.strictEqual( |
| 53 | bytesWritten, |
| 54 | 16 * 1024, |
| 55 | 'Direct fd write should be truncated to 16KiB' |
| 56 | ); |
| 57 | }, |
| 58 | }; |