mirror of
https://github.com/nodejs/node.git
synced 2025-05-11 22:07:57 +00:00

As much as I would like to do this everywhere and then modify the lint rule to enforce it, the churn would be too big. However if we're going to have relatively frequent nits for this sort of thing (as we do), I'd prefer we migrate a few files at a time to never actually getting around to doing it. Ref: https://github.com/nodejs/node/pull/45448#pullrequestreview-1179370442 PR-URL: https://github.com/nodejs/node/pull/45466 Reviewed-By: James M Snell <jasnell@gmail.com>
76 lines
2.1 KiB
JavaScript
76 lines
2.1 KiB
JavaScript
// Flags: --no-warnings
|
|
'use strict';
|
|
const common = require('../common');
|
|
const {
|
|
setMaxListeners,
|
|
EventEmitter,
|
|
} = require('events');
|
|
const assert = require('assert');
|
|
|
|
common.expectWarning({
|
|
MaxListenersExceededWarning: [
|
|
['Possible EventTarget memory leak detected. 3 foo listeners added to ' +
|
|
'EventTarget. Use events.setMaxListeners() ' +
|
|
'to increase limit'],
|
|
['Possible EventTarget memory leak detected. 3 foo listeners added to ' +
|
|
'[MessagePort [EventTarget]]. ' +
|
|
'Use events.setMaxListeners() to increase ' +
|
|
'limit'],
|
|
['Possible EventTarget memory leak detected. 3 foo listeners added to ' +
|
|
'[MessagePort [EventTarget]]. ' +
|
|
'Use events.setMaxListeners() to increase ' +
|
|
'limit'],
|
|
['Possible EventTarget memory leak detected. 3 foo listeners added to ' +
|
|
'[AbortSignal]. ' +
|
|
'Use events.setMaxListeners() to increase ' +
|
|
'limit'],
|
|
],
|
|
});
|
|
|
|
|
|
{
|
|
const et = new EventTarget();
|
|
setMaxListeners(2, et);
|
|
et.addEventListener('foo', () => {});
|
|
et.addEventListener('foo', () => {});
|
|
et.addEventListener('foo', () => {});
|
|
}
|
|
|
|
{
|
|
// No warning emitted because prior limit was only for that
|
|
// one EventTarget.
|
|
const et = new EventTarget();
|
|
et.addEventListener('foo', () => {});
|
|
et.addEventListener('foo', () => {});
|
|
et.addEventListener('foo', () => {});
|
|
}
|
|
|
|
{
|
|
const mc = new MessageChannel();
|
|
setMaxListeners(2, mc.port1);
|
|
mc.port1.addEventListener('foo', () => {});
|
|
mc.port1.addEventListener('foo', () => {});
|
|
mc.port1.addEventListener('foo', () => {});
|
|
}
|
|
|
|
{
|
|
// Set the default for newly created EventTargets
|
|
setMaxListeners(2);
|
|
const mc = new MessageChannel();
|
|
mc.port1.addEventListener('foo', () => {});
|
|
mc.port1.addEventListener('foo', () => {});
|
|
mc.port1.addEventListener('foo', () => {});
|
|
|
|
const ac = new AbortController();
|
|
ac.signal.addEventListener('foo', () => {});
|
|
ac.signal.addEventListener('foo', () => {});
|
|
ac.signal.addEventListener('foo', () => {});
|
|
}
|
|
|
|
{
|
|
// It works for EventEmitters also
|
|
const ee = new EventEmitter();
|
|
setMaxListeners(2, ee);
|
|
assert.strictEqual(ee.getMaxListeners(), 2);
|
|
}
|