node/test/parallel/test-next-tick-errors.js
Rich Trott 4faaed69fa test,tools: enable linting for undefined vars
The test directory had linting for undefined variables disabled. It is
enabled everywhere else in the code base. Let's disable the fule for
individual lines in the handful of tests that use undefined variables.

PR-URL: https://github.com/nodejs/node/pull/6255
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
2016-04-20 08:38:41 -07:00

54 lines
1.2 KiB
JavaScript

'use strict';
require('../common');
var assert = require('assert');
const order = [];
let exceptionHandled = false;
// This nextTick function will throw an error. It should only be called once.
// When it throws an error, it should still get removed from the queue.
process.nextTick(function() {
order.push('A');
// cause an error
what(); // eslint-disable-line no-undef
});
// This nextTick function should remain in the queue when the first one
// is removed. It should be called if the error in the first one is
// caught (which we do in this test).
process.nextTick(function() {
order.push('C');
});
function testNextTickWith(val) {
assert.throws(
function() {
process.nextTick(val);
},
TypeError
);
}
testNextTickWith(false);
testNextTickWith(true);
testNextTickWith(1);
testNextTickWith('str');
testNextTickWith({});
testNextTickWith([]);
process.on('uncaughtException', function() {
if (!exceptionHandled) {
exceptionHandled = true;
order.push('B');
}
else {
// If we get here then the first process.nextTick got called twice
order.push('OOPS!');
}
});
process.on('exit', function() {
assert.deepEqual(['A', 'B', 'C'], order);
});