waitForOutput method

Future<bool> waitForOutput(
  1. String content, {
  2. bool caseSensitive = true,
  3. int timeoutMs = 10000,
})

Wait for specific content to appear in the output

Implementation

Future<bool> waitForOutput(
  String content, {
  bool caseSensitive = true,
  int timeoutMs = 10000,
}) {
  final completer = Completer<bool>();
  late StreamSubscription<String> subscription;

  // Check if content is already in buffer
  final searchContent = caseSensitive ? content : content.toLowerCase();
  for (final line in _outputBuffer) {
    final lineToCheck = caseSensitive ? line : line.toLowerCase();
    if (lineToCheck.contains(searchContent)) {
      return Future.value(true);
    }
  }

  // Set up listener
  subscription = _outputController.stream.listen((line) {
    final lineToCheck = caseSensitive ? line : line.toLowerCase();
    if (lineToCheck.contains(searchContent)) {
      subscription.cancel();
      if (!completer.isCompleted) {
        completer.complete(true);
      }
    }
  });

  // Set timeout
  Future.delayed(Duration(milliseconds: timeoutMs)).then((_) {
    subscription.cancel();
    if (!completer.isCompleted) {
      completer.complete(false);
    }
  });

  return completer.future;
}