mirror of
https://github.com/nodejs/node.git
synced 2025-05-06 03:45:25 +00:00

Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/36001 Fixes: https://github.com/nodejs/node/issues/35990 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
80 lines
2.2 KiB
JavaScript
80 lines
2.2 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 [EventTarget]]. ' +
|
|
'Use events.setMaxListeners() to increase ' +
|
|
'limit'],
|
|
],
|
|
ExperimentalWarning: [[
|
|
'AbortController is an experimental feature. This feature could change ' +
|
|
'at any time'
|
|
]]
|
|
});
|
|
|
|
|
|
{
|
|
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);
|
|
}
|