From 93c87e92b312f77e50717ed0277f4c05880da2e7 Mon Sep 17 00:00:00 2001 From: Emmanuel Garcia Date: Thu, 13 May 2021 21:24:04 -0700 Subject: [PATCH] [flutter_tool] Suggest fix for transform input (#82309) --- .../lib/src/android/gradle_errors.dart | 35 +++++++++++++++++ .../android/gradle_errors_test.dart | 39 +++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/packages/flutter_tools/lib/src/android/gradle_errors.dart b/packages/flutter_tools/lib/src/android/gradle_errors.dart index c95052c5b44..495efaf3124 100644 --- a/packages/flutter_tools/lib/src/android/gradle_errors.dart +++ b/packages/flutter_tools/lib/src/android/gradle_errors.dart @@ -74,6 +74,7 @@ final List gradleErrors = [ r8FailureHandler, androidXFailureHandler, minSdkVersion, + transformInputIssue, ]; // Permission defined error message. @@ -394,3 +395,37 @@ final GradleHandledError minSdkVersion = GradleHandledError( }, eventLabel: 'plugin-min-sdk', ); + +/// Handler when https://issuetracker.google.com/issues/141126614 or +/// https://github.com/flutter/flutter/issues/58247 is triggered. +@visibleForTesting +final GradleHandledError transformInputIssue = GradleHandledError( + test: (String line) { + return line.contains('https://issuetracker.google.com/issues/158753935'); + }, + handler: ({ + String line, + FlutterProject project, + bool usesAndroidX, + bool shouldBuildPluginAsAar, + }) async { + final File gradleFile = project.directory + .childDirectory('android') + .childDirectory('app') + .childFile('build.gradle'); + + globals.printStatus( + '\nThis issue appears to be https://github.com/flutter/flutter/issues/58247.\n'+ + globals.logger.terminal.bolden( + 'Fix this issue by adding the following to the file ${gradleFile.path}:\n' + 'android {\n' + ' lintOptions {\n' + ' checkReleaseBuilds false\n' + ' }\n' + '}' + ) + ); + return GradleBuildStatus.exit; + }, + eventLabel: 'transform-input-issue', +); diff --git a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart index 07e46dfccb5..cebd686523e 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart @@ -30,6 +30,7 @@ void main() { r8FailureHandler, androidXFailureHandler, minSdkVersion, + transformInputIssue, ]) ); }); @@ -688,6 +689,44 @@ assembleProfile ProcessManager: () => FakeProcessManager.empty(), }); }); + + // https://issuetracker.google.com/issues/141126614 + group('transform input issue', () { + testWithoutContext('pattern', () { + expect( + transformInputIssue.test( + 'https://issuetracker.google.com/issues/158753935' + ), + isTrue, + ); + }); + + testUsingContext('suggestion', () async { + await transformInputIssue.handler( + project: FlutterProject.fromDirectoryTest(globals.fs.currentDirectory), + ); + + expect( + testLogger.statusText, + contains( + '\n' + 'This issue appears to be https://github.com/flutter/flutter/issues/58247.\n' + 'Fix this issue by adding the following to the file /android/app/build.gradle:\n' + 'android {\n' + ' lintOptions {\n' + ' checkReleaseBuilds false\n' + ' }\n' + '}\n' + '' + ) + ); + }, overrides: { + GradleUtils: () => FakeGradleUtils(), + Platform: () => fakePlatform('android'), + FileSystem: () => MemoryFileSystem.test(), + ProcessManager: () => FakeProcessManager.empty(), + }); + }); } bool formatTestErrorMessage(String errorMessage, GradleHandledError error) {