Unverified Commit 886eb3e6 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] remove mocks from ios_device, project, flutter_command test (#82195)

parent 191c75d4
...@@ -15,7 +15,7 @@ import 'package:flutter_tools/src/ios/devices.dart'; ...@@ -15,7 +15,7 @@ import 'package:flutter_tools/src/ios/devices.dart';
import 'package:flutter_tools/src/ios/ios_deploy.dart'; import 'package:flutter_tools/src/ios/ios_deploy.dart';
import 'package:flutter_tools/src/ios/mac.dart'; import 'package:flutter_tools/src/ios/mac.dart';
import 'package:flutter_tools/src/vmservice.dart'; import 'package:flutter_tools/src/vmservice.dart';
import 'package:mockito/mockito.dart'; import 'package:test/fake.dart';
import 'package:vm_service/vm_service.dart'; import 'package:vm_service/vm_service.dart';
import '../../src/common.dart'; import '../../src/common.dart';
...@@ -226,13 +226,13 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt ...@@ -226,13 +226,13 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt
); );
logReader.connectedVMService = vmService; logReader.connectedVMService = vmService;
final MockIOSDeployDebugger iosDeployDebugger = MockIOSDeployDebugger(); final FakeIOSDeployDebugger iosDeployDebugger = FakeIOSDeployDebugger();
when(iosDeployDebugger.debuggerAttached).thenReturn(true); iosDeployDebugger.debuggerAttached = true;
final Stream<String> debuggingLogs = Stream<String>.fromIterable(<String>[ final Stream<String> debuggingLogs = Stream<String>.fromIterable(<String>[
'Message from debugger' 'Message from debugger'
]); ]);
when(iosDeployDebugger.logLines).thenAnswer((Invocation invocation) => debuggingLogs); iosDeployDebugger.logLines = debuggingLogs;
logReader.debuggerStream = iosDeployDebugger; logReader.debuggerStream = iosDeployDebugger;
// Wait for stream listeners to fire. // Wait for stream listeners to fire.
...@@ -260,8 +260,8 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt ...@@ -260,8 +260,8 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt
), ),
useSyslog: false, useSyslog: false,
); );
final MockIOSDeployDebugger iosDeployDebugger = MockIOSDeployDebugger(); final FakeIOSDeployDebugger iosDeployDebugger = FakeIOSDeployDebugger();
when(iosDeployDebugger.logLines).thenAnswer((Invocation invocation) => debuggingLogs); iosDeployDebugger.logLines = debuggingLogs;
logReader.debuggerStream = iosDeployDebugger; logReader.debuggerStream = iosDeployDebugger;
final Future<List<String>> logLines = logReader.logLines.toList(); final Future<List<String>> logLines = logReader.logLines.toList();
...@@ -285,8 +285,8 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt ...@@ -285,8 +285,8 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt
useSyslog: false, useSyslog: false,
); );
final Completer<void> streamComplete = Completer<void>(); final Completer<void> streamComplete = Completer<void>();
final MockIOSDeployDebugger iosDeployDebugger = MockIOSDeployDebugger(); final FakeIOSDeployDebugger iosDeployDebugger = FakeIOSDeployDebugger();
when(iosDeployDebugger.logLines).thenAnswer((Invocation invocation) => debuggingLogs); iosDeployDebugger.logLines = debuggingLogs;
logReader.logLines.listen(null, onError: (Object error) => streamComplete.complete()); logReader.logLines.listen(null, onError: (Object error) => streamComplete.complete());
logReader.debuggerStream = iosDeployDebugger; logReader.debuggerStream = iosDeployDebugger;
...@@ -303,14 +303,26 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt ...@@ -303,14 +303,26 @@ Runner(libsystem_asl.dylib)[297] <Notice>: libMobileGestalt
), ),
useSyslog: false, useSyslog: false,
); );
final MockIOSDeployDebugger iosDeployDebugger = MockIOSDeployDebugger(); final FakeIOSDeployDebugger iosDeployDebugger = FakeIOSDeployDebugger();
when(iosDeployDebugger.logLines).thenAnswer((Invocation invocation) => const Stream<String>.empty());
logReader.debuggerStream = iosDeployDebugger; logReader.debuggerStream = iosDeployDebugger;
logReader.dispose(); logReader.dispose();
verify(iosDeployDebugger.detach()); expect(iosDeployDebugger.detached, true);
}); });
}); });
} }
class MockIOSDeployDebugger extends Mock implements IOSDeployDebugger {} class FakeIOSDeployDebugger extends Fake implements IOSDeployDebugger {
bool detached = false;
@override
bool debuggerAttached = false;
@override
Stream<String> logLines = const Stream<String>.empty();
@override
void detach() {
detached = true;
}
}
...@@ -21,7 +21,7 @@ import 'package:flutter_tools/src/dart/pub.dart'; ...@@ -21,7 +21,7 @@ import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/globals_null_migrated.dart' as globals; import 'package:flutter_tools/src/globals_null_migrated.dart' as globals;
import 'package:flutter_tools/src/reporting/reporting.dart'; import 'package:flutter_tools/src/reporting/reporting.dart';
import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart';
import 'package:mockito/mockito.dart'; import 'package:test/fake.dart';
import '../../src/common.dart'; import '../../src/common.dart';
import '../../src/context.dart'; import '../../src/context.dart';
...@@ -30,19 +30,18 @@ import 'utils.dart'; ...@@ -30,19 +30,18 @@ import 'utils.dart';
void main() { void main() {
group('Flutter Command', () { group('Flutter Command', () {
MockCache cache; FakeCache cache;
TestUsage usage; TestUsage usage;
FakeClock clock; FakeClock clock;
MockProcessInfo mockProcessInfo; FakeProcessInfo processInfo;
setUp(() { setUp(() {
Cache.disableLocking(); Cache.disableLocking();
cache = MockCache(); cache = FakeCache();
usage = TestUsage(); usage = TestUsage();
clock = FakeClock(); clock = FakeClock();
mockProcessInfo = MockProcessInfo(); processInfo = FakeProcessInfo();
processInfo.maxRss = 10;
when(mockProcessInfo.maxRss).thenReturn(10);
}); });
tearDown(() { tearDown(() {
...@@ -58,7 +57,8 @@ void main() { ...@@ -58,7 +57,8 @@ void main() {
testUsingContext('honors shouldUpdateCache false', () async { testUsingContext('honors shouldUpdateCache false', () async {
final DummyFlutterCommand flutterCommand = DummyFlutterCommand(shouldUpdateCache: false); final DummyFlutterCommand flutterCommand = DummyFlutterCommand(shouldUpdateCache: false);
await flutterCommand.run(); await flutterCommand.run();
verifyNever(cache.updateAll(any));
expect(cache.artifacts, isEmpty);
expect(flutterCommand.deprecated, isFalse); expect(flutterCommand.deprecated, isFalse);
expect(flutterCommand.hidden, isFalse); expect(flutterCommand.hidden, isFalse);
}, },
...@@ -71,7 +71,7 @@ void main() { ...@@ -71,7 +71,7 @@ void main() {
await flutterCommand.run(); await flutterCommand.run();
// First call for universal, second for the rest // First call for universal, second for the rest
expect( expect(
verify(cache.updateAll(captureAny)).captured, cache.artifacts,
<Set<DevelopmentArtifact>>[ <Set<DevelopmentArtifact>>[
<DevelopmentArtifact>{DevelopmentArtifact.universal}, <DevelopmentArtifact>{DevelopmentArtifact.universal},
<DevelopmentArtifact>{}, <DevelopmentArtifact>{},
...@@ -143,7 +143,7 @@ void main() { ...@@ -143,7 +143,7 @@ void main() {
void testUsingCommandContext(String testName, dynamic Function() testBody) { void testUsingCommandContext(String testName, dynamic Function() testBody) {
testUsingContext(testName, testBody, overrides: <Type, Generator>{ testUsingContext(testName, testBody, overrides: <Type, Generator>{
ProcessInfo: () => mockProcessInfo, ProcessInfo: () => processInfo,
SystemClock: () => clock, SystemClock: () => clock,
Usage: () => usage, Usage: () => usage,
}); });
...@@ -201,40 +201,6 @@ void main() { ...@@ -201,40 +201,6 @@ void main() {
]); ]);
}); });
testUsingCommandContext('reports command that results in failure', () async {
// Crash if called a third time which is unexpected.
clock.times = <int>[1000, 2000];
final DummyFlutterCommand flutterCommand = DummyFlutterCommand(
commandFunction: () async {
return const FlutterCommandResult(ExitStatus.fail);
}
);
try {
await flutterCommand.run();
} on ToolExit {
verify(usage.sendCommand(
'dummy',
parameters: anyNamed('parameters'),
));
verify(usage.sendEvent(
'tool-command-result',
'dummy',
label: 'fail',
parameters: anyNamed('parameters'),
));
expect(verify(usage.sendEvent(
'tool-command-max-rss',
'dummy',
label: 'fail',
value: captureAnyNamed('value'),
)).captured[0],
10,
);
}
});
testUsingCommandContext('reports command that results in error', () async { testUsingCommandContext('reports command that results in error', () async {
// Crash if called a third time which is unexpected. // Crash if called a third time which is unexpected.
clock.times = <int>[1000, 2000]; clock.times = <int>[1000, 2000];
...@@ -315,15 +281,15 @@ void main() { ...@@ -315,15 +281,15 @@ void main() {
}); });
group('signals tests', () { group('signals tests', () {
MockIoProcessSignal mockSignal; FakeIoProcessSignal mockSignal;
ProcessSignal signalUnderTest; ProcessSignal signalUnderTest;
StreamController<io.ProcessSignal> signalController; StreamController<io.ProcessSignal> signalController;
setUp(() { setUp(() {
mockSignal = MockIoProcessSignal(); mockSignal = FakeIoProcessSignal();
signalUnderTest = ProcessSignal(mockSignal); signalUnderTest = ProcessSignal(mockSignal);
signalController = StreamController<io.ProcessSignal>(); signalController = StreamController<io.ProcessSignal>();
when(mockSignal.watch()).thenAnswer((Invocation invocation) => signalController.stream); mockSignal.stream = signalController.stream;
}); });
testUsingContext('reports command that is killed', () async { testUsingContext('reports command that is killed', () async {
...@@ -363,7 +329,7 @@ void main() { ...@@ -363,7 +329,7 @@ void main() {
), ),
]); ]);
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
ProcessInfo: () => mockProcessInfo, ProcessInfo: () => processInfo,
Signals: () => FakeSignals( Signals: () => FakeSignals(
subForSigTerm: signalUnderTest, subForSigTerm: signalUnderTest,
exitSignals: <ProcessSignal>[signalUnderTest], exitSignals: <ProcessSignal>[signalUnderTest],
...@@ -397,11 +363,8 @@ void main() { ...@@ -397,11 +363,8 @@ void main() {
signalController.add(mockSignal); signalController.add(mockSignal);
await completer.future; await completer.future;
await globals.cache.lock();
globals.cache.releaseLock();
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
ProcessInfo: () => mockProcessInfo, ProcessInfo: () => processInfo,
Signals: () => FakeSignals( Signals: () => FakeSignals(
subForSigTerm: signalUnderTest, subForSigTerm: signalUnderTest,
exitSignals: <ProcessSignal>[signalUnderTest], exitSignals: <ProcessSignal>[signalUnderTest],
...@@ -671,8 +634,29 @@ class FakeDdsCommand extends FlutterCommand { ...@@ -671,8 +634,29 @@ class FakeDdsCommand extends FlutterCommand {
} }
} }
class MockProcessInfo extends Mock implements ProcessInfo {} class FakeProcessInfo extends Fake implements ProcessInfo {
class MockIoProcessSignal extends Mock implements io.ProcessSignal {} @override
int maxRss = 0;
}
class FakeIoProcessSignal extends Fake implements io.ProcessSignal {
Stream<io.ProcessSignal> stream;
@override
Stream<io.ProcessSignal> watch() => stream;
}
class FakeCache extends Fake implements Cache {
List<Set<DevelopmentArtifact>> artifacts = <Set<DevelopmentArtifact>>[];
@override
Future<void> updateAll(Set<DevelopmentArtifact> requiredArtifacts) async {
artifacts.add(requiredArtifacts.toSet());
}
@override
void releaseLock() { }
}
class FakeSignals implements Signals { class FakeSignals implements Signals {
FakeSignals({ FakeSignals({
...@@ -708,8 +692,6 @@ class FakeClock extends Fake implements SystemClock { ...@@ -708,8 +692,6 @@ class FakeClock extends Fake implements SystemClock {
} }
} }
class MockCache extends Mock implements Cache {}
class FakePub extends Fake implements Pub { class FakePub extends Fake implements Pub {
@override @override
Future<void> get({ Future<void> get({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment