• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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