11'use strict' ;
22const common = require ( '../common' ) ;
33const assert = require ( 'assert' ) ;
4-
4+ const util = require ( 'util' ) ;
5+ const fs = require ( 'fs' ) ;
56const spawn = require ( 'child_process' ) . spawn ;
67
78if ( process . argv [ 2 ] === 'child' ) {
8- process . send ( 'hahah' ) ;
9+ const consoleLog = common . mustCall ( ( ) => {
10+ console . log ( '{"method": "console.log"}' ) ;
11+ } )
12+ const processSend = common . mustCall ( ( ) => {
13+ process . send ( { method : 'process.send' } , consoleLog ) ;
14+ } ) ;
15+ const fsWrite = common . mustCall ( ( ) => {
16+ fs . write ( 1 , '{"method": "process.fs.write"}\n' , processSend ) ;
17+ } ) ;
18+ const stdoutWrite = ( ) => {
19+ process . stdout . write ( '{"method": "process.stdout.write"}\n' , fsWrite ) ;
20+ } ;
21+
22+ stdoutWrite ( ) ;
923 return ;
1024}
1125
@@ -16,3 +30,13 @@ const proc = spawn(process.execPath, [__filename, 'child'], {
1630proc . on ( 'exit' , common . mustCall ( function ( code ) {
1731 assert . strictEqual ( code , 0 ) ;
1832} ) ) ;
33+
34+ let messagesReceived = 0 ;
35+ proc . on ( 'message' , ( message ) => {
36+ console . log ( `Received: ${ util . inspect ( message ) } ` ) ;
37+ ++ messagesReceived ;
38+ } ) ;
39+
40+ process . on ( 'exit' , ( ) => {
41+ assert . equal ( messagesReceived , 4 , 'Not all messages has been received' ) ;
42+ } )
0 commit comments