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: nodejs/node#1734
Reviewed-By: Trevor Norris <[email protected]>
  • Loading branch information
santigimeno authored and andrewdeandrade committed Jun 3, 2015
1 parent 0e4c0c7 commit a3ae211
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 a3ae211

Please sign in to comment.