'use strict'; const common = require('../common'); const assert = require('assert'); const path = require('path'); const childProcess = require('child_process'); const fs = require('fs'); const fixtures = require('../common/fixtures'); const scriptString = fixtures.path('print-chars.js'); const scriptBuffer = fixtures.path('print-chars-from-buffer.js'); const tmpFile = path.join(common.tmpDir, 'stdout.txt'); common.refreshTmpDir(); function test(size, useBuffer, cb) { const cmd = `"${process.argv[0]}" "${ useBuffer ? scriptBuffer : scriptString}" ${size} > "${tmpFile}"`; try { fs.unlinkSync(tmpFile); } catch (e) {} console.log(`${size} chars to ${tmpFile}...`); childProcess.exec(cmd, common.mustCall(function(err) { assert.ifError(err); console.log('done!'); const stat = fs.statSync(tmpFile); console.log(`${tmpFile} has ${stat.size} bytes`); assert.strictEqual(size, stat.size); fs.unlinkSync(tmpFile); cb(); })); } test(1024 * 1024, false, common.mustCall(function() { console.log('Done printing with string'); test(1024 * 1024, true, common.mustCall(function() { console.log('Done printing with buffer'); })); }));