@@ -31,7 +31,7 @@ const {
3131 getStringWidth,
3232 stripVTControlCharacters
3333} = require ( 'internal/util/inspect' ) ;
34- const EventEmitter = require ( 'events' ) . EventEmitter ;
34+ const { EventEmitter, getEventListeners } = require ( 'events' ) ;
3535const { Writable, Readable } = require ( 'stream' ) ;
3636
3737class FakeInput extends EventEmitter {
@@ -1132,3 +1132,58 @@ for (let i = 0; i < 12; i++) {
11321132 rl . line = `a${ ' ' . repeat ( 1e6 ) } a` ;
11331133 rl . cursor = rl . line . length ;
11341134}
1135+
1136+ {
1137+ const fi = new FakeInput ( ) ;
1138+ const signal = AbortSignal . abort ( ) ;
1139+
1140+ const rl = readline . createInterface ( {
1141+ input : fi ,
1142+ output : fi ,
1143+ signal,
1144+ } ) ;
1145+ rl . on ( 'close' , common . mustCall ( ) ) ;
1146+ assert . strictEqual ( getEventListeners ( signal , 'abort' ) . length , 0 ) ;
1147+ }
1148+
1149+ {
1150+ const fi = new FakeInput ( ) ;
1151+ const ac = new AbortController ( ) ;
1152+ const { signal } = ac ;
1153+ const rl = readline . createInterface ( {
1154+ input : fi ,
1155+ output : fi ,
1156+ signal,
1157+ } ) ;
1158+ assert . strictEqual ( getEventListeners ( signal , 'abort' ) . length , 1 ) ;
1159+ rl . on ( 'close' , common . mustCall ( ) ) ;
1160+ ac . abort ( ) ;
1161+ assert . strictEqual ( getEventListeners ( signal , 'abort' ) . length , 0 ) ;
1162+ }
1163+
1164+ {
1165+ const fi = new FakeInput ( ) ;
1166+ const ac = new AbortController ( ) ;
1167+ const { signal } = ac ;
1168+ const rl = readline . createInterface ( {
1169+ input : fi ,
1170+ output : fi ,
1171+ signal,
1172+ } ) ;
1173+ assert . strictEqual ( getEventListeners ( signal , 'abort' ) . length , 1 ) ;
1174+ rl . close ( ) ;
1175+ assert . strictEqual ( getEventListeners ( signal , 'abort' ) . length , 0 ) ;
1176+ }
1177+
1178+ {
1179+ // Constructor throws if signal is not an abort signal
1180+ assert . throws ( ( ) => {
1181+ readline . createInterface ( {
1182+ input : new FakeInput ( ) ,
1183+ signal : { } ,
1184+ } ) ;
1185+ } , {
1186+ name : 'TypeError' ,
1187+ code : 'ERR_INVALID_ARG_TYPE'
1188+ } ) ;
1189+ }
0 commit comments