Skip to content
File

Blob: src/workerd/api/node/tests/process-stdio-fs-nodejs-test.js

javascript59 lines
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
4import { writeSync, ReadStream } from 'node:fs';
5import { Buffer } from 'node:buffer';
6import { Readable } from 'node:stream';
7import assert from 'node:assert';
8 
9export 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 
23export 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 
45export 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};