diff --git a/script/tool/lib/src/dependabot_check_command.dart b/script/tool/lib/src/dependabot_check_command.dart index 094385729e8..fc3238a7699 100644 --- a/script/tool/lib/src/dependabot_check_command.dart +++ b/script/tool/lib/src/dependabot_check_command.dart @@ -68,10 +68,13 @@ class DependabotCheckCommand extends PackageLoopingCommand { bool skipped = true; final List errors = []; - final RunState gradleState = _validateDependabotGradleCoverage(package); - skipped = skipped && gradleState == RunState.skipped; - if (gradleState == RunState.failed) { + final _GradleCoverageResult gradleResult = + _validateDependabotGradleCoverage(package); + skipped = skipped && gradleResult.runState == RunState.skipped; + if (gradleResult.runState == RunState.failed) { printError('${indentation}Missing Gradle coverage.'); + print('${indentation}Add a "gradle" entry to ' + '${getStringArg(_configPathFlag)} for ${gradleResult.missingPath}'); errors.add('Missing Gradle coverage'); } @@ -90,7 +93,8 @@ class DependabotCheckCommand extends PackageLoopingCommand { /// - succeeded if it includes gradle and is covered. /// - failed if it includes gradle and is not covered. /// - skipped if it doesn't include gradle. - RunState _validateDependabotGradleCoverage(RepositoryPackage package) { + _GradleCoverageResult _validateDependabotGradleCoverage( + RepositoryPackage package) { final Directory androidDir = package.platformDirectory(FlutterPlatform.android); final Directory appDir = androidDir.childDirectory('app'); @@ -99,16 +103,23 @@ class DependabotCheckCommand extends PackageLoopingCommand { final String dependabotPath = '/${getRelativePosixPath(appDir, from: _repoRoot)}'; return _gradleDirs.contains(dependabotPath) - ? RunState.succeeded - : RunState.failed; + ? _GradleCoverageResult(RunState.succeeded) + : _GradleCoverageResult(RunState.failed, missingPath: dependabotPath); } else if (androidDir.existsSync()) { // It's a library, so only check for the android directory to be covered. final String dependabotPath = '/${getRelativePosixPath(androidDir, from: _repoRoot)}'; return _gradleDirs.contains(dependabotPath) - ? RunState.succeeded - : RunState.failed; + ? _GradleCoverageResult(RunState.succeeded) + : _GradleCoverageResult(RunState.failed, missingPath: dependabotPath); } - return RunState.skipped; + return _GradleCoverageResult(RunState.skipped); } } + +class _GradleCoverageResult { + _GradleCoverageResult(this.runState, {this.missingPath}); + + final RunState runState; + final String? missingPath; +} diff --git a/script/tool/test/dependabot_check_command_test.dart b/script/tool/test/dependabot_check_command_test.dart index 39dd8f4fcb9..5a8e91d117f 100644 --- a/script/tool/test/dependabot_check_command_test.dart +++ b/script/tool/test/dependabot_check_command_test.dart @@ -91,6 +91,8 @@ ${gradleEntries.join('\n')} output, containsAllInOrder([ contains('Missing Gradle coverage.'), + contains( + 'Add a "gradle" entry to .github/dependabot.yml for /packages/a_package/example/android/app'), contains('a_package/example:\n' ' Missing Gradle coverage') ])); @@ -112,6 +114,8 @@ ${gradleEntries.join('\n')} output, containsAllInOrder([ contains('Missing Gradle coverage.'), + contains( + 'Add a "gradle" entry to .github/dependabot.yml for /packages/a_plugin/android'), contains('a_plugin:\n' ' Missing Gradle coverage') ]));