Skip to content

Commit

Permalink
test: fix test-sync-io-option
Browse files Browse the repository at this point in the history
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: #1734
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
  • Loading branch information
santigimeno authored and brendanashworth committed May 20, 2015
1 parent f29762f commit 8676319
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions test/parallel/test-sync-io-option.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand Down

0 comments on commit 8676319

Please sign in to comment.