mirror of
https://github.com/nodejs/node.git
synced 2025-05-03 09:52:21 +00:00

Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/36240 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Shelley Vohr <codebytere@gmail.com> Reviewed-By: Rich Trott <rtrott@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);
|
|
}
|