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 24 console.log(`${size} chars to ${tmpFile}...`); 25 26 childProcess.exec(cmd, common.mustCall(function(err) { 27 assert.ifError(err); 28 console.log('done!'); 29 30 const stat = fs.statSync(tmpFile); 31 32 console.log(`${tmpFile} has ${stat.size} bytes`); 33 34 assert.strictEqual(size, stat.size); 35 fs.unlinkSync(tmpFile); 36 37 cb(); 38 })); 39} 40 41test(1024 * 1024, false, common.mustCall(function() { 42 console.log('Done printing with string'); 43 test(1024 * 1024, true, common.mustCall(function() { 44 console.log('Done printing with buffer'); 45 })); 46})); 47