mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
f29762f4dd
Enable linting for the test directory. A number of changes was made so all tests conform the current rules used by lib and src directories. The only exception for tests is that unreachable (dead) code is allowed. test-fs-non-number-arguments-throw had to be excluded from the changes because of a weird issue on Windows CI. PR-URL: https://github.com/nodejs/io.js/pull/1721 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
'use strict';
|
|
// Tests of multiple domains happening at once.
|
|
|
|
var common = require('../common');
|
|
var assert = require('assert');
|
|
var domain = require('domain');
|
|
var events = require('events');
|
|
|
|
var caughtA = false;
|
|
var caughtB = false;
|
|
var caughtC = false;
|
|
|
|
|
|
var a = domain.create();
|
|
a.enter(); // this will be our "root" domain
|
|
a.on('error', function(er) {
|
|
caughtA = true;
|
|
console.log('This should not happen');
|
|
throw er;
|
|
});
|
|
|
|
|
|
var http = require('http');
|
|
var server = http.createServer(function(req, res) {
|
|
// child domain of a.
|
|
var b = domain.create();
|
|
a.add(b);
|
|
|
|
// treat these EE objects as if they are a part of the b domain
|
|
// so, an 'error' event on them propagates to the domain, rather
|
|
// than being thrown.
|
|
b.add(req);
|
|
b.add(res);
|
|
|
|
b.on('error', function(er) {
|
|
caughtB = true;
|
|
console.error('Error encountered', er);
|
|
if (res) {
|
|
res.writeHead(500);
|
|
res.end('An error occurred');
|
|
}
|
|
// res.writeHead(500), res.destroy, etc.
|
|
server.close();
|
|
});
|
|
|
|
// XXX this bind should not be necessary.
|
|
// the write cb behavior in http/net should use an
|
|
// event so that it picks up the domain handling.
|
|
res.write('HELLO\n', b.bind(function() {
|
|
throw new Error('this kills domain B, not A');
|
|
}));
|
|
|
|
}).listen(common.PORT);
|
|
|
|
var c = domain.create();
|
|
var req = http.get({ host: 'localhost', port: common.PORT });
|
|
|
|
// add the request to the C domain
|
|
c.add(req);
|
|
|
|
req.on('response', function(res) {
|
|
console.error('got response');
|
|
// add the response object to the C domain
|
|
c.add(res);
|
|
res.pipe(process.stdout);
|
|
});
|
|
|
|
c.on('error', function(er) {
|
|
caughtC = true;
|
|
console.error('Error on c', er.message);
|
|
});
|
|
|
|
process.on('exit', function() {
|
|
assert.equal(caughtA, false);
|
|
assert.equal(caughtB, true);
|
|
assert.equal(caughtC, true);
|
|
console.log('ok - Errors went where they were supposed to go');
|
|
});
|