diff --git a/test/parallel/test-event-emitter-once.js b/test/parallel/test-event-emitter-once.js index 67f69fd952..e304bccb6e 100644 --- a/test/parallel/test-event-emitter-once.js +++ b/test/parallel/test-event-emitter-once.js @@ -34,3 +34,23 @@ assert.throws(() => { ee.once('foo', null); }, /^TypeError: "listener" argument must be a function$/); + +{ + // once() has different code paths based on the number of arguments being + // emitted. Verify that all of the cases are covered. + const maxArgs = 4; + + for (let i = 0; i <= maxArgs; ++i) { + const ee = new EventEmitter(); + const args = ['foo']; + + for (let j = 0; j < i; ++j) + args.push(j); + + ee.once('foo', common.mustCall((...params) => { + assert.deepStrictEqual(params, args.slice(1)); + })); + + EventEmitter.prototype.emit.apply(ee, args); + } +}