Handle empty builders case for /api/reset-try-task (#2085)
diff --git a/app_dart/lib/src/request_handlers/reset_try_task.dart b/app_dart/lib/src/request_handlers/reset_try_task.dart
index 9d70698..19829a5 100644
--- a/app_dart/lib/src/request_handlers/reset_try_task.dart
+++ b/app_dart/lib/src/request_handlers/reset_try_task.dart
@@ -34,9 +34,8 @@
final String owner = request!.uri.queryParameters[kOwnerParam] ?? 'flutter';
final String repo = request!.uri.queryParameters[kRepoParam]!;
final String pr = request!.uri.queryParameters[kPullRequestNumberParam]!;
- final String? builders = request!.uri.queryParameters[kBuilderParam] ?? '';
- // The [builders] parameter is expecting comma joined string, e.g. 'builder1, builder2'.
- final List<String> builderList = builders!.split(',').map((String builder) => builder.trim()).toList();
+ final String builders = request!.uri.queryParameters[kBuilderParam] ?? '';
+ final List<String> builderList = getBuilderList(builders);
final int? prNumber = int.tryParse(pr);
if (prNumber == null) {
@@ -48,4 +47,15 @@
await scheduler.triggerPresubmitTargets(pullRequest: pullRequest, builderTriggerList: builderList);
return Body.empty;
}
+
+ /// Parses [builders] to a String list.
+ ///
+ /// The [builders] parameter is expecting comma joined string, e.g. 'builder1, builder2'.
+ /// Returns an empty list if no [builders] is specified.
+ List<String> getBuilderList(String builders) {
+ if (builders.isEmpty) {
+ return <String>[];
+ }
+ return builders.split(',').map((String builder) => builder.trim()).toList();
+ }
}
diff --git a/app_dart/test/request_handlers/reset_try_task_test.dart b/app_dart/test/request_handlers/reset_try_task_test.dart
index f5b6d5e..5b5a4da 100644
--- a/app_dart/test/request_handlers/reset_try_task_test.dart
+++ b/app_dart/test/request_handlers/reset_try_task_test.dart
@@ -80,5 +80,14 @@
});
expect(await tester.get(handler), Body.empty);
});
+
+ test('Parses empty builder correctly', () {
+ final List<String> builders = handler.getBuilderList('');
+ expect(builders.isEmpty, true);
+ });
+
+ test('Parses non-empty builder correctly', () {
+ expect(handler.getBuilderList('a, b, c'), <String>['a', 'b', 'c']);
+ });
});
}