1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const path = require('path'); 5const childProcess = require('child_process'); 6const fs = require('fs'); 7const fixtures = require('../common/fixtures'); 8const tmpdir = require('../common/tmpdir'); 9 10const scriptString = fixtures.path('print-chars.js'); 11const scriptBuffer = fixtures.path('print-chars-from-buffer.js'); 12const tmpFile = path.join(tmpdir.path, 'stdout.txt'); 13 14tmpdir.refresh(); 15 16function test(size, useBuffer, cb) { 17 const cmd = `"${process.argv[0]}" "${ 18 useBuffer ? scriptBuffer : scriptString}" ${size} > "${tmpFile}"`; 19 20 try { 21 fs.unlinkSync(tmpFile); 22 } catch { 23 // Continue regardless of error. 24 } 25 26 console.log(`${size} chars to ${tmpFile}...`); 27 28 childProcess.exec(cmd, common.mustSucceed(() => { 29 console.log('done!'); 30 31 const stat = fs.statSync(tmpFile); 32 33 console.log(`${tmpFile} has ${stat.size} bytes`); 34 35 assert.strictEqual(size, stat.size); 36 fs.unlinkSync(tmpFile); 37 38 cb(); 39 })); 40} 41 42test(1024 * 1024, false, common.mustCall(function() { 43 console.log('Done printing with string'); 44 test(1024 * 1024, true, common.mustCall(function() { 45 console.log('Done printing with buffer'); 46 })); 47})); 48