Browse Source

test: fix test-sync-io-option

Wait for all the data to be available in stderr before checking its
contents. In FreeBSD this was failing because stderr data was being
emitted in multiple chunks. 4 WARNINGS are printed instead of 2 for
each sync call inside readFileSync. require('fs') does not print any
trace.

PR-URL: https://github.com/nodejs/io.js/pull/1734
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
v2.3.1-release
Santiago Gimeno 10 years ago
committed by Brendan Ashworth
parent
commit
867631986f
  1. 22
      test/parallel/test-sync-io-option.js

22
test/parallel/test-sync-io-option.js

@ -15,24 +15,26 @@ if (process.argv[2] === 'child') {
var execArgv = [flags.pop()];
var args = [__filename, 'child'];
var child = spawn(process.execPath, execArgv.concat(args));
var cntr = 0;
var stderr = '';
child.stdout.on('data', function(chunk) {
throw new Error('UNREACHABLE');
});
child.stderr.on('data', function(chunk) {
// Prints twice for --trace-sync-io. First for the require() and second
// for the fs operation.
if (/^WARNING[\s\S]*fs\.readFileSync/.test(chunk.toString()))
cntr++;
stderr += chunk.toString();
});
child.on('exit', function() {
if (execArgv[0] === '--trace-sync-io')
assert.equal(cntr, 2);
else if (execArgv[0] === ' ')
assert.equal(cntr, 0);
child.on('close', function() {
var cntr1 = (stderr.match(/WARNING/g) || []).length;
var cntr2 = (stderr.match(/fs\.readFileSync/g) || []).length;
assert.equal(cntr1, cntr2);
if (execArgv[0] === '--trace-sync-io') {
// Prints 4 WARNINGS for --trace-sync-io. 1 for each sync call
// inside readFileSync
assert.equal(cntr1, 4);
} else if (execArgv[0] === ' ')
assert.equal(cntr1, 0);
else
throw new Error('UNREACHABLE');

Loading…
Cancel
Save