@@ -93,3 +93,44 @@ t.test('Set env', async t => {
9393 await server . close ( ) ;
9494 t . equal ( server . pid , null ) ;
9595} ) ;
96+
97+ t . test ( 'Use additional fd' , async t => {
98+ const server = await ServerStarter . newServer ( ) ;
99+ t . equal ( server . pid , null ) ;
100+
101+ const ln = await getListener ( ) ;
102+
103+ await server . launch ( 'node' , [ 'test/support/server_fd.js' , '-additional-fd' ] , { fds : [ ln . fd ] } ) ;
104+ t . equal ( typeof server . pid , 'number' ) ;
105+
106+ await new Promise ( resolve => ln . srv . close ( resolve ) ) ;
107+
108+ const ua = new UserAgent ( { baseURL : server . url ( ) } ) ;
109+ const res = await ua . get ( '/' ) ;
110+ t . equal ( res . isSuccess , true ) ;
111+ t . equal ( res . get ( 'Content-Type' ) , 'text/plain' ) ;
112+ t . equal ( await res . text ( ) , 'Hello World!' ) ;
113+
114+ const ua2 = new UserAgent ( { baseURL : `http://127.0.0.1:${ ln . port } ` } ) ;
115+ const res2 = await ua2 . get ( '/' ) ;
116+ t . equal ( res2 . isSuccess , true ) ;
117+ t . equal ( res2 . get ( 'Content-Type' ) , 'text/plain' ) ;
118+ t . equal ( await res2 . text ( ) , 'Hello again World!' ) ;
119+
120+ await server . close ( ) ;
121+ t . equal ( server . pid , null ) ;
122+ } ) ;
123+
124+ function getListener ( ) {
125+ return new Promise ( ( resolve , reject ) => {
126+ const srv = net . createServer ( ) ;
127+ srv . on ( 'error' , reject ) ;
128+ srv . listen ( 0 , ( ) => {
129+ resolve ( {
130+ fd : srv . _handle . fd ,
131+ port : srv . address ( ) . port ,
132+ srv : srv
133+ } ) ;
134+ } ) ;
135+ } ) ;
136+ }
0 commit comments