internalBootstrapNativeTest function

void internalBootstrapNativeTest(
  1. Function getMain(),
  2. List<String> args
)

Bootstraps a native executable test to communicate with the test runner over a socket.

Implementation

void internalBootstrapNativeTest(
  Function Function() getMain,
  List<String> args,
) async {
  if (args.length != 1) {
    throw StateError('Expected a socket path, but got $args');
  }
  var socket = await Socket.connect(
    InternetAddress(args[0], type: InternetAddressType.unix),
    0,
  );
  var platformChannel = MultiChannel<Object?>(jsonSocketStreamChannel(socket));
  var testControlChannel = platformChannel.virtualChannel()
    ..pipe(serializeSuite(getMain));
  platformChannel.sink.add(testControlChannel.id);

  unawaited(
    platformChannel.stream.forEach((message) {
      assert(message == 'debug');
      debugger(message: 'Paused by test runner');
      platformChannel.sink.add('done');
    }),
  );
}