Skip to content

Commit e78cdf9

Browse files
committed
dependabot command update
1 parent 4f9704c commit e78cdf9

File tree

2 files changed

+55
-8
lines changed

2 files changed

+55
-8
lines changed

script/tool/lib/src/dependabot_check_command.dart

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,20 @@ class DependabotCheckCommand extends PackageLoopingCommand {
5656

5757
const String typeKey = 'package-ecosystem';
5858
const String dirKey = 'directory';
59-
_gradleDirs = entries
59+
const String dirsKey = 'directories';
60+
final Iterable<YamlMap> gradleEntries = entries
6061
.cast<YamlMap>()
61-
.where((YamlMap entry) => entry[typeKey] == 'gradle')
62-
.map((YamlMap entry) => entry[dirKey] as String)
62+
.where((YamlMap entry) => entry[typeKey] == 'gradle');
63+
final Iterable<String?> directoryEntries =
64+
gradleEntries.map((YamlMap entry) => entry[dirKey] as String?);
65+
final Iterable<String?> directoriesEntries = gradleEntries
66+
.map((YamlMap entry) => entry[dirsKey] as YamlList?)
67+
.expand((YamlList? list) => list?.nodes ?? <String>[])
68+
.cast<YamlScalar>()
69+
.map((YamlScalar entry) => entry.value as String);
70+
_gradleDirs = directoryEntries
71+
.followedBy(directoriesEntries)
72+
.whereType<String>()
6373
.toSet();
6474
}
6575

script/tool/test/dependabot_check_command_test.dart

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,32 @@ void main() {
3838

3939
void setDependabotCoverage({
4040
Iterable<String> gradleDirs = const <String>[],
41+
bool useDirectoriesKey = false,
4142
}) {
42-
final Iterable<String> gradleEntries =
43-
gradleDirs.map((String directory) => '''
43+
final String gradleEntries;
44+
if (useDirectoriesKey) {
45+
gradleEntries = '''
46+
- package-ecosystem: "gradle"
47+
directories:
48+
${gradleDirs.map((String directory) => ' - /$directory').join('\n')}
49+
schedule:
50+
interval: "daily"
51+
''';
52+
} else {
53+
gradleEntries = gradleDirs.map((String directory) => '''
4454
- package-ecosystem: "gradle"
4555
directory: "/$directory"
4656
schedule:
4757
interval: "daily"
48-
''');
58+
''').join('\n');
59+
}
4960
final File configFile =
5061
root.childDirectory('.github').childFile('dependabot.yml');
5162
configFile.createSync(recursive: true);
5263
configFile.writeAsStringSync('''
5364
version: 2
5465
updates:
55-
${gradleEntries.join('\n')}
66+
$gradleEntries
5667
''');
5768
}
5869

@@ -121,7 +132,7 @@ ${gradleEntries.join('\n')}
121132
]));
122133
});
123134

124-
test('passes for correct Gradle coverage', () async {
135+
test('passes for correct Gradle coverage with single directory', () async {
125136
setDependabotCoverage(gradleDirs: <String>[
126137
'packages/a_plugin/android',
127138
'packages/a_plugin/example/android/app',
@@ -142,4 +153,30 @@ ${gradleEntries.join('\n')}
142153
expect(output,
143154
containsAllInOrder(<Matcher>[contains('Ran for 2 package(s)')]));
144155
});
156+
157+
test('passes for correct Gradle coverage with multiple directories',
158+
() async {
159+
setDependabotCoverage(
160+
gradleDirs: <String>[
161+
'packages/a_plugin/android',
162+
'packages/a_plugin/example/android/app',
163+
],
164+
useDirectoriesKey: true,
165+
);
166+
final RepositoryPackage plugin = createFakePlugin('a_plugin', packagesDir);
167+
// Test the plugin.
168+
plugin.directory.childDirectory('android').createSync(recursive: true);
169+
// And its example app.
170+
plugin.directory
171+
.childDirectory('example')
172+
.childDirectory('android')
173+
.childDirectory('app')
174+
.createSync(recursive: true);
175+
176+
final List<String> output =
177+
await runCapturingPrint(runner, <String>['dependabot-check']);
178+
179+
expect(output,
180+
containsAllInOrder(<Matcher>[contains('Ran for 2 package(s)')]));
181+
});
145182
}

0 commit comments

Comments
 (0)