Skip to content

Commit c450272

Browse files
Trottjasnell
authored andcommitted
test: refactor event-emitter-check-listener-leaks
* add block-scoping * use common.mustCall() on callbacks that should not execute PR-URL: #13164 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
1 parent efae43f commit c450272

File tree

1 file changed

+63
-57
lines changed

1 file changed

+63
-57
lines changed

test/parallel/test-event-emitter-check-listener-leaks.js

+63-57
Original file line numberDiff line numberDiff line change
@@ -25,73 +25,79 @@ const common = require('../common');
2525
const assert = require('assert');
2626
const events = require('events');
2727

28-
let e = new events.EventEmitter();
29-
3028
// default
31-
for (let i = 0; i < 10; i++) {
32-
e.on('default', common.noop);
33-
}
34-
assert.ok(!e._events['default'].hasOwnProperty('warned'));
35-
e.on('default', common.noop);
36-
assert.ok(e._events['default'].warned);
29+
{
30+
const e = new events.EventEmitter();
3731

38-
// symbol
39-
const symbol = Symbol('symbol');
40-
e.setMaxListeners(1);
41-
e.on(symbol, common.noop);
42-
assert.ok(!e._events[symbol].hasOwnProperty('warned'));
43-
e.on(symbol, common.noop);
44-
assert.ok(e._events[symbol].hasOwnProperty('warned'));
32+
for (let i = 0; i < 10; i++) {
33+
e.on('default', common.mustNotCall());
34+
}
35+
assert.ok(!e._events['default'].hasOwnProperty('warned'));
36+
e.on('default', common.mustNotCall());
37+
assert.ok(e._events['default'].warned);
4538

46-
// specific
47-
e.setMaxListeners(5);
48-
for (let i = 0; i < 5; i++) {
49-
e.on('specific', common.noop);
50-
}
51-
assert.ok(!e._events['specific'].hasOwnProperty('warned'));
52-
e.on('specific', common.noop);
53-
assert.ok(e._events['specific'].warned);
39+
// symbol
40+
const symbol = Symbol('symbol');
41+
e.setMaxListeners(1);
42+
e.on(symbol, common.mustNotCall());
43+
assert.ok(!e._events[symbol].hasOwnProperty('warned'));
44+
e.on(symbol, common.mustNotCall());
45+
assert.ok(e._events[symbol].hasOwnProperty('warned'));
46+
47+
// specific
48+
e.setMaxListeners(5);
49+
for (let i = 0; i < 5; i++) {
50+
e.on('specific', common.mustNotCall());
51+
}
52+
assert.ok(!e._events['specific'].hasOwnProperty('warned'));
53+
e.on('specific', common.mustNotCall());
54+
assert.ok(e._events['specific'].warned);
5455

55-
// only one
56-
e.setMaxListeners(1);
57-
e.on('only one', common.noop);
58-
assert.ok(!e._events['only one'].hasOwnProperty('warned'));
59-
e.on('only one', common.noop);
60-
assert.ok(e._events['only one'].hasOwnProperty('warned'));
56+
// only one
57+
e.setMaxListeners(1);
58+
e.on('only one', common.mustNotCall());
59+
assert.ok(!e._events['only one'].hasOwnProperty('warned'));
60+
e.on('only one', common.mustNotCall());
61+
assert.ok(e._events['only one'].hasOwnProperty('warned'));
6162

62-
// unlimited
63-
e.setMaxListeners(0);
64-
for (let i = 0; i < 1000; i++) {
65-
e.on('unlimited', common.noop);
63+
// unlimited
64+
e.setMaxListeners(0);
65+
for (let i = 0; i < 1000; i++) {
66+
e.on('unlimited', common.mustNotCall());
67+
}
68+
assert.ok(!e._events['unlimited'].hasOwnProperty('warned'));
6669
}
67-
assert.ok(!e._events['unlimited'].hasOwnProperty('warned'));
6870

6971
// process-wide
70-
events.EventEmitter.defaultMaxListeners = 42;
71-
e = new events.EventEmitter();
72+
{
73+
events.EventEmitter.defaultMaxListeners = 42;
74+
const e = new events.EventEmitter();
7275

73-
for (let i = 0; i < 42; ++i) {
74-
e.on('fortytwo', common.noop);
75-
}
76-
assert.ok(!e._events['fortytwo'].hasOwnProperty('warned'));
77-
e.on('fortytwo', common.noop);
78-
assert.ok(e._events['fortytwo'].hasOwnProperty('warned'));
79-
delete e._events['fortytwo'].warned;
76+
for (let i = 0; i < 42; ++i) {
77+
e.on('fortytwo', common.mustNotCall());
78+
}
79+
assert.ok(!e._events['fortytwo'].hasOwnProperty('warned'));
80+
e.on('fortytwo', common.mustNotCall());
81+
assert.ok(e._events['fortytwo'].hasOwnProperty('warned'));
82+
delete e._events['fortytwo'].warned;
8083

81-
events.EventEmitter.defaultMaxListeners = 44;
82-
e.on('fortytwo', common.noop);
83-
assert.ok(!e._events['fortytwo'].hasOwnProperty('warned'));
84-
e.on('fortytwo', common.noop);
85-
assert.ok(e._events['fortytwo'].hasOwnProperty('warned'));
84+
events.EventEmitter.defaultMaxListeners = 44;
85+
e.on('fortytwo', common.mustNotCall());
86+
assert.ok(!e._events['fortytwo'].hasOwnProperty('warned'));
87+
e.on('fortytwo', common.mustNotCall());
88+
assert.ok(e._events['fortytwo'].hasOwnProperty('warned'));
89+
}
8690

8791
// but _maxListeners still has precedence over defaultMaxListeners
88-
events.EventEmitter.defaultMaxListeners = 42;
89-
e = new events.EventEmitter();
90-
e.setMaxListeners(1);
91-
e.on('uno', common.noop);
92-
assert.ok(!e._events['uno'].hasOwnProperty('warned'));
93-
e.on('uno', common.noop);
94-
assert.ok(e._events['uno'].hasOwnProperty('warned'));
92+
{
93+
events.EventEmitter.defaultMaxListeners = 42;
94+
const e = new events.EventEmitter();
95+
e.setMaxListeners(1);
96+
e.on('uno', common.mustNotCall());
97+
assert.ok(!e._events['uno'].hasOwnProperty('warned'));
98+
e.on('uno', common.mustNotCall());
99+
assert.ok(e._events['uno'].hasOwnProperty('warned'));
95100

96-
// chainable
97-
assert.strictEqual(e, e.setMaxListeners(1));
101+
// chainable
102+
assert.strictEqual(e, e.setMaxListeners(1));
103+
}

0 commit comments

Comments
 (0)