deno.land / std@0.166.0 / node / _tools / test / parallel / test-child-process-exec-maxbuf.js
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162// deno-fmt-ignore-file// deno-lint-ignore-file
// Copyright Joyent and Node contributors. All rights reserved. MIT license.// Taken from Node 18.8.0// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
// TODO(#2674): The "eval" subcommand passed to exec() should be the "-e" option.
'use strict';const common = require('../common');const assert = require('assert');const cp = require('child_process');
function runChecks(err, stdio, streamName, expected) { assert.strictEqual(err.message, `${streamName} maxBuffer length exceeded`); assert(err instanceof RangeError); assert.strictEqual(err.code, 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER'); assert.deepStrictEqual(stdio[streamName], expected);}
// default value{ const cmd = `"${process.execPath}" eval "console.log('a'.repeat(1024 * 1024))"`;
cp.exec(cmd, common.mustCall((err) => { assert(err instanceof RangeError); assert.strictEqual(err.message, 'stdout maxBuffer length exceeded'); assert.strictEqual(err.code, 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER'); }));}
// default value{ const cmd = `${process.execPath} eval "console.log('a'.repeat(1024 * 1024 - 1))"`;
cp.exec(cmd, common.mustSucceed((stdout, stderr) => { assert.strictEqual(stdout.trim(), 'a'.repeat(1024 * 1024 - 1)); assert.strictEqual(stderr, ''); }));}
{ const cmd = `"${process.execPath}" eval "console.log('hello world');"`; const options = { maxBuffer: Infinity };
cp.exec(cmd, options, common.mustSucceed((stdout, stderr) => { assert.strictEqual(stdout.trim(), 'hello world'); assert.strictEqual(stderr, ''); }));}
{ const cmd = 'echo hello world';
cp.exec( cmd, { maxBuffer: 5 }, common.mustCall((err, stdout, stderr) => { runChecks(err, { stdout, stderr }, 'stdout', 'hello'); }) );}
// default value{ const cmd = `"${process.execPath}" eval "console.log('a'.repeat(1024 * 1024))"`;
cp.exec( cmd, common.mustCall((err, stdout, stderr) => { runChecks( err, { stdout, stderr }, 'stdout', 'a'.repeat(1024 * 1024) ); }) );}
// default value{ const cmd = `"${process.execPath}" eval "console.log('a'.repeat(1024 * 1024 - 1))"`;
cp.exec(cmd, common.mustSucceed((stdout, stderr) => { assert.strictEqual(stdout.trim(), 'a'.repeat(1024 * 1024 - 1)); assert.strictEqual(stderr, ''); }));}
const unicode = '中文测试'; // length = 4, byte length = 12
{ const cmd = `"${process.execPath}" eval "console.log('${unicode}');"`;
cp.exec( cmd, { maxBuffer: 10 }, common.mustCall((err, stdout, stderr) => { runChecks(err, { stdout, stderr }, 'stdout', '中文测试\n'); }) );}
{ const cmd = `"${process.execPath}" eval "console.error('${unicode}');"`;
cp.exec( cmd, { maxBuffer: 3 }, common.mustCall((err, stdout, stderr) => { runChecks(err, { stdout, stderr }, 'stderr', '中文测'); }) );}
{ const cmd = `"${process.execPath}" eval "console.log('${unicode}');"`;
const child = cp.exec( cmd, { encoding: null, maxBuffer: 10 }, common.mustCall((err, stdout, stderr) => { runChecks(err, { stdout, stderr }, 'stdout', '中文测试\n'); }) );
child.stdout.setEncoding('utf-8');}
{ const cmd = `"${process.execPath}" eval "console.error('${unicode}');"`;
const child = cp.exec( cmd, { encoding: null, maxBuffer: 3 }, common.mustCall((err, stdout, stderr) => { runChecks(err, { stdout, stderr }, 'stderr', '中文测'); }) );
child.stderr.setEncoding('utf-8');}
{ const cmd = `"${process.execPath}" eval "console.error('${unicode}');"`;
cp.exec( cmd, { encoding: null, maxBuffer: 5 }, common.mustCall((err, stdout, stderr) => { const buf = Buffer.from(unicode).slice(0, 5); runChecks(err, { stdout, stderr }, 'stderr', buf); }) );}
Version Info