@@ -27,6 +27,42 @@ void main() {
2727 daemonProcess.kill ();
2828 });
2929
30+ testWithoutContext ('startup events' , () async {
31+ final BasicProject project = BasicProject ();
32+ await project.setUpIn (tempDir);
33+
34+ const ProcessManager processManager = LocalProcessManager ();
35+ daemonProcess = await processManager.start (
36+ < String > [flutterBin, ...getLocalEngineArguments (), '--show-test-device' , 'daemon' ],
37+ workingDirectory: tempDir.path,
38+ );
39+
40+ final StreamController <String > stdout = StreamController <String >.broadcast ();
41+ transformToLines (daemonProcess.stdout).listen ((String line) => stdout.add (line));
42+ final Stream <Map <String , Object ?>> stream =
43+ stdout.stream
44+ .map <Map <String , Object ?>?>(parseFlutterResponse)
45+ .where ((Map <String , Object ?>? value) => value != null )
46+ .cast <Map <String , Object ?>>();
47+
48+ final [
49+ Map <String , Object ?> connectedEvent,
50+ Map <String , Object ?> logMessage,
51+ ] = await Future .wait (< Future <Map <String , Object ?>>> [
52+ stream.firstWhere ((Map <String , Object ?> e) => e['event' ] == 'daemon.connected' ),
53+ stream.firstWhere ((Map <String , Object ?> e) => e['event' ] == 'daemon.logMessage' ),
54+ ]);
55+
56+ // Check the connected message has a version.
57+ final Map <String , Object ?> connectedParams = connectedEvent['params' ]! as Map <String , Object ?>;
58+ expect (connectedParams['version' ], isNotNull);
59+
60+ // Check we got the startup message.
61+ final Map <String , Object ?> logParams = logMessage['params' ]! as Map <String , Object ?>;
62+ expect (logParams['level' ], 'status' );
63+ expect (logParams['message' ], 'Device daemon started.' );
64+ });
65+
3066 testWithoutContext ('device.getDevices' , () async {
3167 final BasicProject project = BasicProject ();
3268 await project.setUpIn (tempDir);
0 commit comments