diff --git a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart index cd7608c780..720e42b011 100644 --- a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart +++ b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart @@ -37,6 +37,22 @@ const Set kNeedsCheckLabelsAndTests = { final RegExp kEngineTestRegExp = RegExp(r'(tests?|benchmarks?)\.(dart|java|mm|m|cc|sh)$'); final List kNeedsTestsLabels = ['needs tests']; +// Extentions for files that use // for single line comments. +// See [_allChangesAreCodeComments] for more. +@visibleForTesting +const Set knownCommentCodeExtensions = { + 'cc', + 'cpp', + 'dart', + 'gradle', + 'groovy', + 'java', + 'kt', + 'm', + 'mm', + 'swift', +}; + /// Subscription for processing GitHub webhooks. /// /// The PubSub subscription is set up here: @@ -660,20 +676,9 @@ class GithubWebhookSubscription extends SubscriptionHandler { return false; } - // Ensure that the file is a language reconized by the check below. - const Set codeExtensions = { - 'cc', - 'cpp', - 'dart', - 'java', - 'kt', - 'm', - 'mm', - 'swift', - }; final String filename = file.filename!; final String? extension = filename.contains('.') ? filename.split('.').last.toLowerCase() : null; - if (extension == null || !codeExtensions.contains(extension)) { + if (extension == null || !knownCommentCodeExtensions.contains(extension)) { return false; } diff --git a/app_dart/test/request_handlers/github/webhook_subscription_test.dart b/app_dart/test/request_handlers/github/webhook_subscription_test.dart index d1c9debbb4..f0dfa68ed6 100644 --- a/app_dart/test/request_handlers/github/webhook_subscription_test.dart +++ b/app_dart/test/request_handlers/github/webhook_subscription_test.dart @@ -1436,12 +1436,13 @@ void main() { ); }); - test('Framework no comment if only comments changed', () async { - const int issueNumber = 123; - tester.message = generateGithubWebhookMessage(action: 'opened', number: issueNumber); - final RepositorySlug slug = RepositorySlug('flutter', 'flutter'); + for (String extention in knownCommentCodeExtensions) { + test('Framework no comment if only comments changed .$extention', () async { + const int issueNumber = 123; + tester.message = generateGithubWebhookMessage(action: 'opened', number: issueNumber); + final RepositorySlug slug = RepositorySlug('flutter', 'flutter'); - const String patch = ''' + const String patch = ''' @@ -128,7 +128,7 @@ /// Insert interesting comment here. @@ -1453,27 +1454,28 @@ void foo() { String baz = ''; '''; - when(pullRequestsService.listFiles(slug, issueNumber)).thenAnswer( - (_) => Stream.fromIterable([ - PullRequestFile() - ..filename = 'packages/foo/lib/foo.dart' - ..additionsCount = 1 - ..deletionsCount = 1 - ..changesCount = 2 - ..patch = patch, - ]), - ); + when(pullRequestsService.listFiles(slug, issueNumber)).thenAnswer( + (_) => Stream.fromIterable([ + PullRequestFile() + ..filename = 'packages/foo/lib/foo.$extention' + ..additionsCount = 1 + ..deletionsCount = 1 + ..changesCount = 2 + ..patch = patch, + ]), + ); - await tester.post(webhook); + await tester.post(webhook); - verifyNever( - issuesService.createComment( - slug, - issueNumber, - argThat(contains(config.missingTestsPullRequestMessageValue)), - ), - ); - }); + verifyNever( + issuesService.createComment( + slug, + issueNumber, + argThat(contains(config.missingTestsPullRequestMessageValue)), + ), + ); + }); + } test('Framework labels PRs, no comment if tests (dev/bots/test.dart)', () async { const int issueNumber = 123;