From cc95c972b73215215cf11037565a3bccec2fe653 Mon Sep 17 00:00:00 2001 From: mx1up <178714+mx1up@users.noreply.github.com> Date: Thu, 11 Feb 2021 23:11:03 +0100 Subject: [PATCH] properly pass on gradle exit code (#71484) (#71582) --- .../flutter_tools/lib/src/android/gradle.dart | 4 +- .../general.shard/android/gradle_test.dart | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart index 1a3dd4b0e0a..329fe5281f4 100644 --- a/packages/flutter_tools/lib/src/android/gradle.dart +++ b/packages/flutter_tools/lib/src/android/gradle.dart @@ -645,8 +645,8 @@ Future buildGradleAar({ globals.printStatus(result.stdout, wrap: false); globals.printError(result.stderr, wrap: false); throwToolExit( - 'Gradle task $aarTask failed with exit code $exitCode.', - exitCode: exitCode, + 'Gradle task $aarTask failed with exit code ${result.exitCode}.', + exitCode: result.exitCode, ); } final Directory repoDirectory = getRepoDirectory(outputDirectory); diff --git a/packages/flutter_tools/test/general.shard/android/gradle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_test.dart index c7dfa2ba102..475b03c798e 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart @@ -1704,6 +1704,52 @@ plugin1=${plugin1.path} ProcessManager: () => mockProcessManager, }); + testUsingContext('gradle exit code is properly passed on', () async { + final File manifestFile = fileSystem.file('pubspec.yaml'); + manifestFile.createSync(recursive: true); + manifestFile.writeAsStringSync(''' + flutter: + module: + androidPackage: com.example.test + ''' + ); + + fileSystem.file('.android/gradlew').createSync(recursive: true); + + fileSystem.file('.android/gradle.properties') + .writeAsStringSync('irrelevant'); + + fileSystem.file('.android/build.gradle') + .createSync(recursive: true); + + // Let any process start. Assert after. + when(mockProcessManager.run( + any, + environment: anyNamed('environment'), + workingDirectory: anyNamed('workingDirectory'), + )).thenAnswer((_) async => ProcessResult(1, 108, '', '')); + + fileSystem.directory('build/outputs/repo').createSync(recursive: true); + + await expectLater(() async => + await buildGradleAar( + androidBuildInfo: const AndroidBuildInfo(BuildInfo(BuildMode.release, null, treeShakeIcons: false)), + project: FlutterProject.current(), + outputDirectory: fileSystem.directory('build/'), + target: '', + buildNumber: '1.0', + ) + , throwsToolExit(exitCode: 108, message: 'Gradle task assembleAarRelease failed with exit code 108.')); + + }, overrides: { + AndroidSdk: () => mockAndroidSdk, + AndroidStudio: () => mockAndroidStudio, + Cache: () => cache, + Platform: () => android, + FileSystem: () => fileSystem, + ProcessManager: () => mockProcessManager, + }); + testUsingContext('build apk uses selected local engine,the engine abi is arm', () async { when(mockArtifacts.getArtifactPath( Artifact.flutterFramework,