// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'dart:async'; import 'dart:io' as io; import 'package:file/file.dart'; import 'package:mockito/mockito.dart'; import 'package:platform/platform.dart'; class MockPlatform extends Mock implements Platform { MockPlatform({this.isMacOS = false}); @override bool isMacOS; } class MockProcess extends Mock implements io.Process { MockProcess(); /// A mock process that terminates with exitCode 0. MockProcess.succeeding() { exitCodeCompleter.complete(0); } /// A mock process that terminates with exitCode 1. MockProcess.failing() { exitCodeCompleter.complete(1); } final Completer exitCodeCompleter = Completer(); final StreamController> stdoutController = StreamController>(); final StreamController> stderrController = StreamController>(); final MockIOSink stdinMock = MockIOSink(); @override int get pid => 99; @override Future get exitCode => exitCodeCompleter.future; @override Stream> get stdout => stdoutController.stream; @override Stream> get stderr => stderrController.stream; @override IOSink get stdin => stdinMock; } class MockIOSink extends Mock implements IOSink { List lines = []; @override void writeln([Object? obj = '']) => lines.add(obj.toString()); }