Log additional Android build failures (#43941)
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 0571175..ae81bdf 100644
--- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart
+++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart
@@ -132,6 +132,8 @@
});
group('findBundleFile', () {
+ final Usage mockUsage = MockUsage();
+
testUsingContext('Finds app bundle when flavor contains underscores in release mode', () {
final FlutterProject project = generateFakeAppBundle('foo_barRelease', 'app.aab');
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.release, 'foo_bar'));
@@ -281,9 +283,39 @@
FileSystem: () => MemoryFileSystem(),
ProcessManager: () => FakeProcessManager.any(),
});
+
+ testUsingContext('aab not found', () {
+ final FlutterProject project = FlutterProject.current();
+ expect(
+ () {
+ findBundleFile(project, const BuildInfo(BuildMode.debug, 'foo_bar'));
+ },
+ throwsToolExit(
+ message:
+ 'Gradle build failed to produce an .aab file. It\'s likely that this file '
+ 'was generated under ${project.android.buildDirectory.path}, but the tool couldn\'t find it.'
+ )
+ );
+ verify(
+ mockUsage.sendEvent(
+ any,
+ any,
+ label: 'gradle-expected-file-not-found',
+ parameters: const <String, String> {
+ 'cd37': 'androidGradlePluginVersion: 5.6.2, fileExtension: .aab',
+ },
+ ),
+ ).called(1);
+ }, overrides: <Type, Generator>{
+ FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager.any(),
+ Usage: () => mockUsage,
+ });
});
group('findApkFiles', () {
+ final Usage mockUsage = MockUsage();
+
testUsingContext('Finds APK without flavor in release', () {
final FlutterProject project = MockFlutterProject();
final AndroidProject androidProject = MockAndroidProject();
@@ -352,6 +384,37 @@
FileSystem: () => MemoryFileSystem(),
ProcessManager: () => FakeProcessManager.any(),
});
+
+ testUsingContext('apk not found', () {
+ final FlutterProject project = FlutterProject.current();
+ expect(
+ () {
+ findApkFiles(
+ project,
+ const AndroidBuildInfo(BuildInfo(BuildMode.debug, 'foo_bar')),
+ );
+ },
+ throwsToolExit(
+ message:
+ 'Gradle build failed to produce an .apk file. It\'s likely that this file '
+ 'was generated under ${project.android.buildDirectory.path}, but the tool couldn\'t find it.'
+ )
+ );
+ verify(
+ mockUsage.sendEvent(
+ any,
+ any,
+ label: 'gradle-expected-file-not-found',
+ parameters: const <String, String> {
+ 'cd37': 'androidGradlePluginVersion: 5.6.2, fileExtension: .apk',
+ },
+ ),
+ ).called(1);
+ }, overrides: <Type, Generator>{
+ FileSystem: () => MemoryFileSystem(),
+ ProcessManager: () => FakeProcessManager.any(),
+ Usage: () => mockUsage,
+ });
});
group('gradle build', () {
@@ -365,15 +428,6 @@
AndroidSdk: () => null,
});
- // Regression test for https://github.com/flutter/flutter/issues/34700
- testUsingContext('Does not return nulls in apk list', () {
- const AndroidBuildInfo buildInfo = AndroidBuildInfo(BuildInfo.debug);
- expect(findApkFiles(FlutterProject.current(), buildInfo), <File>[]);
- }, overrides: <Type, Generator>{
- FileSystem: () => MemoryFileSystem(),
- ProcessManager: () => FakeProcessManager.any(),
- });
-
test('androidXPluginWarningRegex should match lines with the AndroidX plugin warnings', () {
final List<String> nonMatchingLines = <String>[
':app:preBuild UP-TO-DATE',
@@ -1118,7 +1172,7 @@
verify(mockUsage.sendEvent(
any,
any,
- label: 'gradle--random-event-label-failure',
+ label: 'gradle-random-event-label-failure',
parameters: anyNamed('parameters'),
)).called(1);
@@ -1199,7 +1253,7 @@
verify(mockUsage.sendEvent(
any,
any,
- label: 'gradle--random-event-label-failure',
+ label: 'gradle-random-event-label-failure',
parameters: anyNamed('parameters'),
)).called(1);
@@ -1287,7 +1341,7 @@
verify(mockUsage.sendEvent(
any,
any,
- label: 'gradle--random-event-label-success',
+ label: 'gradle-random-event-label-success',
parameters: anyNamed('parameters'),
)).called(1);
@@ -1373,7 +1427,7 @@
verify(mockUsage.sendEvent(
any,
any,
- label: 'gradle--random-event-label-failure',
+ label: 'gradle-random-event-label-failure',
parameters: anyNamed('parameters'),
)).called(1);