1// Flags: --no-warnings
2// The flag suppresses stderr output but the warning event will still emit
3'use strict';
4
5const common = require('../common');
6const events = require('events');
7const assert = require('assert');
8
9class FakeInput extends events.EventEmitter {
10  resume() {}
11  pause() {}
12  write() {}
13  end() {}
14}
15
16const e = new FakeInput();
17e.setMaxListeners(1);
18
19process.on('warning', common.mustCall((warning) => {
20  assert.ok(warning instanceof Error);
21  assert.strictEqual(warning.name, 'MaxListenersExceededWarning');
22  assert.strictEqual(warning.emitter, e);
23  assert.strictEqual(warning.count, 2);
24  assert.strictEqual(warning.type, 'event-type');
25  assert.ok(warning.message.includes(
26    '2 event-type listeners added to [FakeInput].'));
27}));
28
29e.on('event-type', () => {});
30e.on('event-type', () => {});  // Trigger warning.
31e.on('event-type', () => {});  // Verify that warning is emitted only once.
32