Skip to content

Commit cbaa340

Browse files
[tool] Add details to missing gradle coverage error (#6029)
When failing a package due to missing gradle coverage, explain what needs to be done to fix it. Fixes flutter/flutter#132453
1 parent 9a7ca13 commit cbaa340

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

script/tool/lib/src/dependabot_check_command.dart

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,13 @@ class DependabotCheckCommand extends PackageLoopingCommand {
6868
bool skipped = true;
6969
final List<String> errors = <String>[];
7070

71-
final RunState gradleState = _validateDependabotGradleCoverage(package);
72-
skipped = skipped && gradleState == RunState.skipped;
73-
if (gradleState == RunState.failed) {
71+
final _GradleCoverageResult gradleResult =
72+
_validateDependabotGradleCoverage(package);
73+
skipped = skipped && gradleResult.runState == RunState.skipped;
74+
if (gradleResult.runState == RunState.failed) {
7475
printError('${indentation}Missing Gradle coverage.');
76+
print('${indentation}Add a "gradle" entry to '
77+
'${getStringArg(_configPathFlag)} for ${gradleResult.missingPath}');
7578
errors.add('Missing Gradle coverage');
7679
}
7780

@@ -90,7 +93,8 @@ class DependabotCheckCommand extends PackageLoopingCommand {
9093
/// - succeeded if it includes gradle and is covered.
9194
/// - failed if it includes gradle and is not covered.
9295
/// - skipped if it doesn't include gradle.
93-
RunState _validateDependabotGradleCoverage(RepositoryPackage package) {
96+
_GradleCoverageResult _validateDependabotGradleCoverage(
97+
RepositoryPackage package) {
9498
final Directory androidDir =
9599
package.platformDirectory(FlutterPlatform.android);
96100
final Directory appDir = androidDir.childDirectory('app');
@@ -99,16 +103,23 @@ class DependabotCheckCommand extends PackageLoopingCommand {
99103
final String dependabotPath =
100104
'/${getRelativePosixPath(appDir, from: _repoRoot)}';
101105
return _gradleDirs.contains(dependabotPath)
102-
? RunState.succeeded
103-
: RunState.failed;
106+
? _GradleCoverageResult(RunState.succeeded)
107+
: _GradleCoverageResult(RunState.failed, missingPath: dependabotPath);
104108
} else if (androidDir.existsSync()) {
105109
// It's a library, so only check for the android directory to be covered.
106110
final String dependabotPath =
107111
'/${getRelativePosixPath(androidDir, from: _repoRoot)}';
108112
return _gradleDirs.contains(dependabotPath)
109-
? RunState.succeeded
110-
: RunState.failed;
113+
? _GradleCoverageResult(RunState.succeeded)
114+
: _GradleCoverageResult(RunState.failed, missingPath: dependabotPath);
111115
}
112-
return RunState.skipped;
116+
return _GradleCoverageResult(RunState.skipped);
113117
}
114118
}
119+
120+
class _GradleCoverageResult {
121+
_GradleCoverageResult(this.runState, {this.missingPath});
122+
123+
final RunState runState;
124+
final String? missingPath;
125+
}

script/tool/test/dependabot_check_command_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ ${gradleEntries.join('\n')}
9191
output,
9292
containsAllInOrder(<Matcher>[
9393
contains('Missing Gradle coverage.'),
94+
contains(
95+
'Add a "gradle" entry to .github/dependabot.yml for /packages/a_package/example/android/app'),
9496
contains('a_package/example:\n'
9597
' Missing Gradle coverage')
9698
]));
@@ -112,6 +114,8 @@ ${gradleEntries.join('\n')}
112114
output,
113115
containsAllInOrder(<Matcher>[
114116
contains('Missing Gradle coverage.'),
117+
contains(
118+
'Add a "gradle" entry to .github/dependabot.yml for /packages/a_plugin/android'),
115119
contains('a_plugin:\n'
116120
' Missing Gradle coverage')
117121
]));

0 commit comments

Comments
 (0)