From 4c6d7fd4e95a730a39d9a2cf924434cfc1c18fcc Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 18 May 2021 22:59:02 -0700 Subject: [PATCH] [flutter_tools] remove mocks from compile expression unit test (#82875) --- .../compile_expression_test.dart | 76 +++++++++++-------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/packages/flutter_tools/test/general.shard/compile_expression_test.dart b/packages/flutter_tools/test/general.shard/compile_expression_test.dart index faab7f0a7cb..1867c936da6 100644 --- a/packages/flutter_tools/test/general.shard/compile_expression_test.dart +++ b/packages/flutter_tools/test/general.shard/compile_expression_test.dart @@ -15,18 +15,17 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/compile.dart'; import 'package:flutter_tools/src/convert.dart'; -import 'package:mockito/mockito.dart'; import 'package:package_config/package_config.dart'; import 'package:process/process.dart'; +import 'package:test/fake.dart'; import '../src/common.dart'; import '../src/fake_process_manager.dart'; import '../src/fakes.dart'; void main() { - ProcessManager mockProcessManager; + FakeProcessManager processManager; ResidentCompiler generator; - MockProcess mockFrontendServer; MemoryIOSink frontendServerStdIn; StreamController stdErrStreamController; BufferLogger testLogger; @@ -34,33 +33,22 @@ void main() { setUp(() { testLogger = BufferLogger.test(); - mockProcessManager = MockProcessManager(); - mockFrontendServer = MockProcess(); + processManager = FakeProcessManager(); frontendServerStdIn = MemoryIOSink(); fileSystem = MemoryFileSystem.test(); generator = ResidentCompiler( 'sdkroot', buildMode: BuildMode.debug, artifacts: Artifacts.test(), - processManager: mockProcessManager, + processManager: processManager, logger: testLogger, platform: FakePlatform(operatingSystem: 'linux'), fileSystem: fileSystem, ); stdErrStreamController = StreamController(); - when(mockFrontendServer.stdin).thenReturn(frontendServerStdIn); - when(mockFrontendServer.stderr) - .thenAnswer((Invocation invocation) => stdErrStreamController.stream.transform(utf8.encoder)); - when(mockFrontendServer.exitCode).thenAnswer((Invocation invocation) { - return Completer().future; - }); - - when(mockProcessManager.canRun(any)).thenReturn(true); - when(mockProcessManager.start(any)).thenAnswer( - (Invocation invocation) => - Future.value(mockFrontendServer) - ); + processManager.process.stdin = frontendServerStdIn; + processManager.process.stderr = stdErrStreamController.stream.transform(utf8.encoder); }); testWithoutContext('compile expression fails if not previously compiled', () async { @@ -79,13 +67,10 @@ void main() { ..createSync(recursive: true) ..writeAsBytesSync([1, 2, 3, 4]); - when(mockFrontendServer.stdout) - .thenAnswer((Invocation invocation) => - Stream>.fromFutures( + processManager.process.stdout = Stream>.fromFutures( >>[ compileResponseCompleter.future, - compileExpressionResponseCompleter.future])); - + compileExpressionResponseCompleter.future]); compileResponseCompleter.complete(Future>.value(utf8.encode( 'result abc\nline1\nline2\nabc\nabc /path/to/main.dart.dill 0\n' ))); @@ -123,14 +108,14 @@ void main() { final Completer> compileExpressionResponseCompleter1 = Completer>(); final Completer> compileExpressionResponseCompleter2 = Completer>(); - when(mockFrontendServer.stdout) - .thenAnswer((Invocation invocation) => - Stream>.fromFutures( - >>[ - compileResponseCompleter.future, - compileExpressionResponseCompleter1.future, - compileExpressionResponseCompleter2.future, - ])); + + processManager.process.stdout = + Stream>.fromFutures( + >>[ + compileResponseCompleter.future, + compileExpressionResponseCompleter1.future, + compileExpressionResponseCompleter2.future, + ]); // The test manages timing via completers. unawaited( @@ -192,5 +177,30 @@ void main() { }); } -class MockProcess extends Mock implements Process {} -class MockProcessManager extends Mock implements ProcessManager {} +class FakeProcess extends Fake implements Process { + @override + Stream> stdout; + + @override + Stream> stderr; + + @override + IOSink stdin; + + @override + Future get exitCode => Completer().future; +} + +class FakeProcessManager extends Fake implements ProcessManager { + final FakeProcess process = FakeProcess(); + + @override + bool canRun(dynamic executable, {String workingDirectory}) { + return true; + } + + @override + Future start(List command, {String workingDirectory, Map environment, bool includeParentEnvironment = true, bool runInShell = false, ProcessStartMode mode = ProcessStartMode.normal}) async { + return process; + } +}