blob: 0dcdedd3db03e083148099b36b214fdad743ecc9 [file] [log] [blame]
// 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.isLinux = false,
this.isMacOS = false,
this.isWindows = false,
});
@override
bool isLinux;
@override
bool isMacOS;
@override
bool isWindows;
@override
Uri get script => isWindows
? Uri.file(r'C:\foo\bar', windows: true)
: Uri.file('/foo/bar', windows: false);
}
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<int> exitCodeCompleter = Completer<int>();
final StreamController<List<int>> stdoutController =
StreamController<List<int>>();
final StreamController<List<int>> stderrController =
StreamController<List<int>>();
final MockIOSink stdinMock = MockIOSink();
@override
int get pid => 99;
@override
Future<int> get exitCode => exitCodeCompleter.future;
@override
Stream<List<int>> get stdout => stdoutController.stream;
@override
Stream<List<int>> get stderr => stderrController.stream;
@override
IOSink get stdin => stdinMock;
}
class MockIOSink extends Mock implements IOSink {
List<String> lines = <String>[];
@override
void writeln([Object? obj = '']) => lines.add(obj.toString());
}