blob: 9eec57f4d9dabac7961a5e5b6afc5fa6c59260b9 [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:convert';
import 'dart:io';
import 'package:fuchsia_ctl/fuchsia_ctl.dart';
import 'package:fuchsia_ctl/src/command_line.dart';
import 'package:mockito/mockito.dart';
class FakeProcess implements Process {
FakeProcess(this._exitCode, this._stdout, this._stderr);
final int _exitCode;
@override
Future<int> get exitCode async => _exitCode;
bool _killed = false;
bool get killed => _killed;
@override
bool kill([ProcessSignal signal = ProcessSignal.sigterm]) {
_killed = true;
return true;
}
@override
int get pid => 1234;
Stream<List<int>> _streamFromString(List<String> source) =>
Stream<List<int>>.fromIterable(
source.map((String line) => utf8.encode('$line\n')));
final List<String> _stderr;
@override
Stream<List<int>> get stderr => _streamFromString(_stderr);
@override
IOSink get stdin => FakeIOSink();
final List<String> _stdout;
@override
Stream<List<int>> get stdout => _streamFromString(_stdout);
}
class FakeIOSink implements IOSink {
final Completer<void> _doneCompleter = Completer<void>.sync();
@override
Encoding encoding = utf8;
@override
void add(List<int> data) {}
@override
void addError(Object error, [StackTrace stackTrace]) {}
@override
Future<dynamic> addStream(Stream<List<int>> stream) async {}
@override
Future<void> close() async {}
@override
Future<void> get done => _doneCompleter.future;
@override
Future<void> flush() async {}
@override
void write(Object obj) {}
@override
void writeAll(Iterable<dynamic> objects, [String separator = '']) {}
@override
void writeCharCode(int charCode) {}
@override
void writeln([Object obj = '']) {}
}
// ignore: must_be_immutable
class MockCommandLine extends Mock implements CommandLine {}
class MockSshKeyManager extends Mock implements SshKeyManager {}