Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
dependabot command update
  • Loading branch information
jmagman committed Nov 8, 2024
commit e78cdf9dda68250db61ff6d42873ca9b0e470ee6
16 changes: 13 additions & 3 deletions script/tool/lib/src/dependabot_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,20 @@ class DependabotCheckCommand extends PackageLoopingCommand {

const String typeKey = 'package-ecosystem';
const String dirKey = 'directory';
_gradleDirs = entries
const String dirsKey = 'directories';
final Iterable<YamlMap> gradleEntries = entries
.cast<YamlMap>()
.where((YamlMap entry) => entry[typeKey] == 'gradle')
.map((YamlMap entry) => entry[dirKey] as String)
.where((YamlMap entry) => entry[typeKey] == 'gradle');
final Iterable<String?> directoryEntries =
gradleEntries.map((YamlMap entry) => entry[dirKey] as String?);
final Iterable<String?> directoriesEntries = gradleEntries
.map((YamlMap entry) => entry[dirsKey] as YamlList?)
.expand((YamlList? list) => list?.nodes ?? <String>[])
.cast<YamlScalar>()
.map((YamlScalar entry) => entry.value as String);
_gradleDirs = directoryEntries
.followedBy(directoriesEntries)
.whereType<String>()
.toSet();
}

Expand Down
47 changes: 42 additions & 5 deletions script/tool/test/dependabot_check_command_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,32 @@ void main() {

void setDependabotCoverage({
Iterable<String> gradleDirs = const <String>[],
bool useDirectoriesKey = false,
}) {
final Iterable<String> gradleEntries =
gradleDirs.map((String directory) => '''
final String gradleEntries;
if (useDirectoriesKey) {
gradleEntries = '''
- package-ecosystem: "gradle"
directories:
${gradleDirs.map((String directory) => ' - /$directory').join('\n')}
schedule:
interval: "daily"
''';
} else {
gradleEntries = gradleDirs.map((String directory) => '''
- package-ecosystem: "gradle"
directory: "/$directory"
schedule:
interval: "daily"
''');
''').join('\n');
}
final File configFile =
root.childDirectory('.github').childFile('dependabot.yml');
configFile.createSync(recursive: true);
configFile.writeAsStringSync('''
version: 2
updates:
${gradleEntries.join('\n')}
$gradleEntries
''');
}

Expand Down Expand Up @@ -121,7 +132,7 @@ ${gradleEntries.join('\n')}
]));
});

test('passes for correct Gradle coverage', () async {
test('passes for correct Gradle coverage with single directory', () async {
setDependabotCoverage(gradleDirs: <String>[
'packages/a_plugin/android',
'packages/a_plugin/example/android/app',
Expand All @@ -142,4 +153,30 @@ ${gradleEntries.join('\n')}
expect(output,
containsAllInOrder(<Matcher>[contains('Ran for 2 package(s)')]));
});

test('passes for correct Gradle coverage with multiple directories',
() async {
setDependabotCoverage(
gradleDirs: <String>[
'packages/a_plugin/android',
'packages/a_plugin/example/android/app',
],
useDirectoriesKey: true,
);
final RepositoryPackage plugin = createFakePlugin('a_plugin', packagesDir);
// Test the plugin.
plugin.directory.childDirectory('android').createSync(recursive: true);
// And its example app.
plugin.directory
.childDirectory('example')
.childDirectory('android')
.childDirectory('app')
.createSync(recursive: true);

final List<String> output =
await runCapturingPrint(runner, <String>['dependabot-check']);

expect(output,
containsAllInOrder(<Matcher>[contains('Ran for 2 package(s)')]));
});
}