-
-
Notifications
You must be signed in to change notification settings - Fork 31.5k
test: don't spawn child processes in domain test #974
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,30 @@ | ||
// Flags: --abort_on_uncaught_exception | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. TIL! |
||
|
||
var common = require('../common'); | ||
var assert = require('assert'); | ||
var spawn = require('child_process').spawn; | ||
var domain = require('domain'); | ||
|
||
var tests = [ | ||
nextTick, | ||
timer, | ||
timerPlusNextTick, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's very peculiar but if firstRun is not last, errors == 4 instead of 5... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That seems ... bizarre. |
||
netServer, | ||
firstRun, | ||
netServer | ||
] | ||
]; | ||
|
||
tests.forEach(function(test) { | ||
console.log(test.name); | ||
var child = spawn(process.execPath, [ | ||
'--abort-on-uncaught-exception', | ||
'-e', | ||
'(' + test + ')()', | ||
common.PORT | ||
]); | ||
child.stderr.pipe(process.stderr); | ||
child.stdout.pipe(process.stdout); | ||
child.on('exit', function(code) { | ||
assert.strictEqual(code, 0); | ||
}); | ||
var errors = 0; | ||
|
||
process.on('exit', function() { | ||
assert.equal(errors, tests.length); | ||
}); | ||
|
||
tests.forEach(function(test) { test(); }) | ||
|
||
function nextTick() { | ||
var domain = require('domain'); | ||
var d = domain.create(); | ||
|
||
d.on('error', function(err) { | ||
console.log('ok'); | ||
process.exit(0); | ||
d.once('error', function(err) { | ||
errors += 1; | ||
}); | ||
d.run(function() { | ||
process.nextTick(function() { | ||
|
@@ -41,12 +34,10 @@ function nextTick() { | |
} | ||
|
||
function timer() { | ||
var domain = require('domain'); | ||
var d = domain.create(); | ||
|
||
d.on('error', function(err) { | ||
console.log('ok'); | ||
process.exit(0); | ||
errors += 1; | ||
}); | ||
d.run(function() { | ||
setTimeout(function() { | ||
|
@@ -56,12 +47,10 @@ function timer() { | |
} | ||
|
||
function timerPlusNextTick() { | ||
var domain = require('domain'); | ||
var d = domain.create(); | ||
|
||
d.on('error', function(err) { | ||
console.log('ok'); | ||
process.exit(0); | ||
errors += 1; | ||
}); | ||
d.run(function() { | ||
setTimeout(function() { | ||
|
@@ -73,37 +62,34 @@ function timerPlusNextTick() { | |
} | ||
|
||
function firstRun() { | ||
var domain = require('domain'); | ||
var d = domain.create(); | ||
|
||
d.on('error', function(err) { | ||
console.log('ok'); | ||
process.exit(0); | ||
errors += 1; | ||
}); | ||
d.run(function() { | ||
throw new Error('exceptional!'); | ||
}); | ||
} | ||
|
||
function netServer() { | ||
var domain = require('domain'); | ||
var net = require('net'); | ||
var d = domain.create(); | ||
|
||
d.on('error', function(err) { | ||
console.log('ok'); | ||
process.exit(0); | ||
errors += 1; | ||
}); | ||
d.run(function() { | ||
var server = net.createServer(function(conn) { | ||
conn.pipe(conn); | ||
}); | ||
server.listen(Number(process.argv[1]), '0.0.0.0', function() { | ||
var conn = net.connect(Number(process.argv[1]), '0.0.0.0') | ||
server.listen(common.PORT, '0.0.0.0', function() { | ||
var conn = net.connect(common.PORT, '0.0.0.0') | ||
conn.once('data', function() { | ||
throw new Error('ok'); | ||
}) | ||
conn.end('ok'); | ||
server.close(); | ||
}); | ||
}); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't feel like filing a separate PR for this so here you have it. :-)