44
55// @dart = 2.8
66
7- import 'dart:io' show Process, ProcessResult;
8-
97import 'package:args/command_runner.dart' ;
108import 'package:flutter_tools/src/android/android_builder.dart' ;
119import 'package:flutter_tools/src/android/android_sdk.dart' ;
@@ -16,13 +14,13 @@ import 'package:flutter_tools/src/commands/build_aar.dart';
1614import 'package:flutter_tools/src/project.dart' ;
1715import 'package:flutter_tools/src/reporting/reporting.dart' ;
1816import 'package:flutter_tools/src/globals.dart' as globals;
19- import 'package:mockito/mockito .dart' ;
17+ import 'package:meta/meta .dart' ;
2018import 'package:process/process.dart' ;
19+ import 'package:test/fake.dart' ;
2120
2221import '../../src/android_common.dart' ;
2322import '../../src/common.dart' ;
2423import '../../src/context.dart' ;
25- import '../../src/mocks.dart' ;
2624
2725void main () {
2826 Cache .disableLocking ();
@@ -112,10 +110,10 @@ void main() {
112110
113111 group ('flag parsing' , () {
114112 Directory tempDir;
115- MockAndroidBuilder mockAndroidBuilder ;
113+ FakeAndroidBuilder fakeAndroidBuilder ;
116114
117115 setUp (() {
118- mockAndroidBuilder = MockAndroidBuilder ();
116+ fakeAndroidBuilder = FakeAndroidBuilder ();
119117 tempDir = globals.fs.systemTempDirectory.createTempSync ('flutter_tools_build_aar_test.' );
120118 });
121119
@@ -128,18 +126,11 @@ void main() {
128126 arguments: < String > ['--no-pub' ]);
129127 await runCommandIn (projectPath);
130128
131- final Set <AndroidBuildInfo > androidBuildInfos = verify (mockAndroidBuilder.buildAar (
132- project: anyNamed ('project' ),
133- target: anyNamed ('target' ),
134- androidBuildInfo: captureAnyNamed ('androidBuildInfo' ),
135- outputDirectoryPath: anyNamed ('outputDirectoryPath' ),
136- buildNumber: '1.0' ,
137- )).captured[0 ] as Set <AndroidBuildInfo >;
138-
139- expect (androidBuildInfos.length, 3 );
129+ expect (fakeAndroidBuilder.buildNumber, '1.0' );
130+ expect (fakeAndroidBuilder.androidBuildInfo.length, 3 );
140131
141132 final List <BuildMode > buildModes = < BuildMode > [];
142- for (final AndroidBuildInfo androidBuildInfo in androidBuildInfos ) {
133+ for (final AndroidBuildInfo androidBuildInfo in fakeAndroidBuilder.androidBuildInfo ) {
143134 final BuildInfo buildInfo = androidBuildInfo.buildInfo;
144135 buildModes.add (buildInfo.mode);
145136 if (buildInfo.mode.isPrecompiled) {
@@ -157,7 +148,7 @@ void main() {
157148 expect (buildModes.length, 3 );
158149 expect (buildModes, containsAll (< BuildMode > [BuildMode .debug, BuildMode .profile, BuildMode .release]));
159150 }, overrides: < Type , Generator > {
160- AndroidBuilder : () => mockAndroidBuilder ,
151+ AndroidBuilder : () => fakeAndroidBuilder ,
161152 });
162153
163154 testUsingContext ('parses flags' , () async {
@@ -182,15 +173,9 @@ void main() {
182173 ],
183174 );
184175
185- final Set <AndroidBuildInfo > androidBuildInfos = verify (mockAndroidBuilder.buildAar (
186- project: anyNamed ('project' ),
187- target: anyNamed ('target' ),
188- androidBuildInfo: captureAnyNamed ('androidBuildInfo' ),
189- outputDirectoryPath: anyNamed ('outputDirectoryPath' ),
190- buildNumber: '200' ,
191- )).captured[0 ] as Set <AndroidBuildInfo >;
176+ expect (fakeAndroidBuilder.buildNumber, '200' );
192177
193- final AndroidBuildInfo androidBuildInfo = androidBuildInfos .single;
178+ final AndroidBuildInfo androidBuildInfo = fakeAndroidBuilder.androidBuildInfo .single;
194179 expect (androidBuildInfo.targetArchs, < AndroidArch > [AndroidArch .x86]);
195180
196181 final BuildInfo buildInfo = androidBuildInfo.buildInfo;
@@ -201,33 +186,15 @@ void main() {
201186 expect (buildInfo.dartObfuscation, isTrue);
202187 expect (buildInfo.dartDefines.contains ('foo=bar' ), isTrue);
203188 }, overrides: < Type , Generator > {
204- AndroidBuilder : () => mockAndroidBuilder ,
189+ AndroidBuilder : () => fakeAndroidBuilder ,
205190 });
206191 });
207192
208193 group ('Gradle' , () {
209- ProcessManager mockProcessManager;
210194 Directory tempDir;
211- AndroidSdk mockAndroidSdk;
212195
213196 setUp (() {
214197 tempDir = globals.fs.systemTempDirectory.createTempSync ('flutter_tools_packages_test.' );
215-
216- mockProcessManager = MockProcessManager ();
217- when (mockProcessManager.run (any,
218- workingDirectory: anyNamed ('workingDirectory' ),
219- environment: anyNamed ('environment' )))
220- .thenAnswer ((_) => Future <ProcessResult >.value (ProcessResult (0 , 0 , 'assembleRelease' , '' )));
221- // Fallback with error.
222- final Process process = createMockProcess (exitCode: 1 );
223- when (mockProcessManager.start (any,
224- workingDirectory: anyNamed ('workingDirectory' ),
225- environment: anyNamed ('environment' )))
226- .thenAnswer ((_) => Future <Process >.value (process));
227- when (mockProcessManager.canRun (any)).thenReturn (false );
228-
229- mockAndroidSdk = MockAndroidSdk ();
230- when (mockAndroidSdk.directory).thenReturn (globals.fs.directory ('irrelevant' ));
231198 });
232199
233200 tearDown (() {
@@ -251,7 +218,7 @@ void main() {
251218 overrides: < Type , Generator > {
252219 AndroidSdk : () => null ,
253220 FlutterProjectFactory : () => FakeFlutterProjectFactory (tempDir),
254- ProcessManager : () => mockProcessManager ,
221+ ProcessManager : () => FakeProcessManager . any () ,
255222 });
256223 });
257224 });
@@ -272,7 +239,25 @@ Future<BuildAarCommand> runBuildAarCommand(
272239 return command;
273240}
274241
275- class MockAndroidBuilder extends Mock implements AndroidBuilder {}
276- class MockAndroidSdk extends Mock implements AndroidSdk {}
277- class MockProcessManager extends Mock implements ProcessManager {}
278- class MockProcess extends Mock implements Process {}
242+ class FakeAndroidBuilder extends Fake implements AndroidBuilder {
243+ FlutterProject project;
244+ Set <AndroidBuildInfo > androidBuildInfo;
245+ String target;
246+ String outputDirectoryPath;
247+ String buildNumber;
248+
249+ @override
250+ Future <void > buildAar ({
251+ @required FlutterProject project,
252+ @required Set <AndroidBuildInfo > androidBuildInfo,
253+ @required String target,
254+ @required String outputDirectoryPath,
255+ @required String buildNumber,
256+ }) async {
257+ this .project = project;
258+ this .androidBuildInfo = androidBuildInfo;
259+ this .target = target;
260+ this .outputDirectoryPath = outputDirectoryPath;
261+ this .buildNumber = buildNumber;
262+ }
263+ }
0 commit comments