diff --git a/packages/flutter_tools/lib/src/test/event_printer.dart b/packages/flutter_tools/lib/src/test/event_printer.dart index ca90f75dc8a..30ac915711f 100644 --- a/packages/flutter_tools/lib/src/test/event_printer.dart +++ b/packages/flutter_tools/lib/src/test/event_printer.dart @@ -22,7 +22,7 @@ class EventPrinter extends TestWatcher { @override void handleStartedDevice(Uri observatoryUri) { _sendEvent('test.startedProcess', - {'observatoryUri': observatoryUri.toString()}); + {'observatoryUri': observatoryUri?.toString()}); _parent?.handleStartedDevice(observatoryUri); } diff --git a/packages/flutter_tools/test/general.shard/test/event_printer_test.dart b/packages/flutter_tools/test/general.shard/test/event_printer_test.dart index 4d5af99aea1..37f6b4b6728 100644 --- a/packages/flutter_tools/test/general.shard/test/event_printer_test.dart +++ b/packages/flutter_tools/test/general.shard/test/event_printer_test.dart @@ -11,15 +11,48 @@ import 'package:mockito/mockito.dart'; import '../../src/common.dart'; void main() { - testWithoutContext('EventPrinter handles a null parent', () { - final EventPrinter eventPrinter = EventPrinter(out: StringBuffer()); - final _Device device = _Device(); + group(EventPrinter, () { final Uri observatoryUri = Uri.parse('http://localhost:1234'); + EventPrinter eventPrinter; + StringBuffer output; - expect(() => eventPrinter.handleFinishedTest(device), returnsNormally); - expect(() => eventPrinter.handleStartedDevice(observatoryUri), returnsNormally); - expect(() => eventPrinter.handleTestCrashed(device), returnsNormally); - expect(() => eventPrinter.handleTestTimedOut(device), returnsNormally); + setUp(() { + output = StringBuffer(); + eventPrinter = EventPrinter(out: output); + }); + + testWithoutContext('handles a null parent', () { + final _Device device = _Device(); + + expect(() => eventPrinter.handleFinishedTest(device), returnsNormally); + expect(() => eventPrinter.handleStartedDevice(observatoryUri), returnsNormally); + expect(() => eventPrinter.handleTestCrashed(device), returnsNormally); + expect(() => eventPrinter.handleTestTimedOut(device), returnsNormally); + }); + + group('handleStartedDevice', () { + testWithoutContext('with non-null observatory', () { + eventPrinter.handleStartedDevice(observatoryUri); + + expect( + output.toString(), + '\n' + '[{"event":"test.startedProcess","params":{"observatoryUri":"http://localhost:1234"}}]' + '\n', + ); + }); + + testWithoutContext('with null observatory', () { + eventPrinter.handleStartedDevice(null); + + expect( + output.toString(), + '\n' + '[{"event":"test.startedProcess","params":{"observatoryUri":null}}]' + '\n', + ); + }); + }); }); }