[app_dart] Do not change baseRef on candidate branches (#2123)
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 2778e99..c514348 100644
--- a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
+++ b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
@@ -548,15 +548,21 @@
return;
}
- // Assume this PR should be based against config.defaultBranch.
- body = _getWrongBaseComment(base: baseName, defaultBranch: defaultBranchName);
- if (!await _alreadyCommented(gitHubClient, pr, body)) {
- await gitHubClient.pullRequests.edit(
- slug,
- pr.number!,
- base: Config.defaultBranch(slug),
- );
- await gitHubClient.issues.createComment(slug, pr.number!, body);
+ // For repos migrated to main, close PRs opened against master.
+ final bool isMaster = pr.base?.ref == 'master';
+ final bool isMigrated = defaultBranchName == 'main';
+ // PRs should never be open to "beta" or "stable."
+ final bool isReleaseChannelBranch = releaseChannels.contains(pr.base?.ref);
+ if ((isMaster && isMigrated) || isReleaseChannelBranch) {
+ body = _getWrongBaseComment(base: baseName, defaultBranch: defaultBranchName);
+ if (!await _alreadyCommented(gitHubClient, pr, body)) {
+ await gitHubClient.pullRequests.edit(
+ slug,
+ pr.number!,
+ base: Config.defaultBranch(slug),
+ );
+ await gitHubClient.issues.createComment(slug, pr.number!, body);
+ }
}
}
diff --git a/app_dart/lib/src/service/config.dart b/app_dart/lib/src/service/config.dart
index 94fa1de..ff923b6 100644
--- a/app_dart/lib/src/service/config.dart
+++ b/app_dart/lib/src/service/config.dart
@@ -29,14 +29,6 @@
/// Name of the default git branch.
const String kDefaultBranchName = 'master';
-/// Name of an example release base branch name.
-// TODO(chillers): Delete this as it's only used for tests.
-const String kReleaseBaseRef = 'flutter-2.12-candidate.4';
-
-/// Name of an example release head branch name.
-// TODO(chillers): Delete this as it's only used for tests.
-const String kReleaseHeadRef = 'cherrypicks-flutter-2.12-candidate.4';
-
class Config {
Config(this._db, this._cache);
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 50cc2e5..4186417 100644
--- a/app_dart/test/request_handlers/github/webhook_subscription_test.dart
+++ b/app_dart/test/request_handlers/github/webhook_subscription_test.dart
@@ -41,6 +41,12 @@
late MockPullRequestsService pullRequestsService;
late SubscriptionTester tester;
+ /// Name of an example release base branch name.
+ const String kReleaseBaseRef = 'flutter-2.12-candidate.4';
+
+ /// Name of an example release head branch name.
+ const String kReleaseHeadRef = 'cherrypicks-flutter-2.12-candidate.4';
+
setUp(() {
request = FakeHttpRequest();
db = FakeDatastoreDB();
@@ -140,6 +146,42 @@
)).called(1);
});
+ test('No action against candidate branches', () async {
+ const int issueNumber = 123;
+
+ tester.message = generateGithubWebhookMessage(
+ action: 'opened',
+ number: issueNumber,
+ baseRef: 'flutter-2.13-candidate.0',
+ );
+
+ when(pullRequestsService.listFiles(Config.flutterSlug, issueNumber)).thenAnswer(
+ (_) => Stream<PullRequestFile>.value(
+ PullRequestFile()..filename = 'packages/flutter/blah.dart',
+ ),
+ );
+
+ when(issuesService.listCommentsByIssue(Config.flutterSlug, issueNumber)).thenAnswer(
+ (_) => Stream<IssueComment>.value(
+ IssueComment()..body = 'some other comment',
+ ),
+ );
+
+ await tester.post(webhook);
+
+ verifyNever(pullRequestsService.edit(
+ Config.flutterSlug,
+ issueNumber,
+ base: kDefaultBranchName,
+ ));
+
+ verifyNever(issuesService.createComment(
+ Config.flutterSlug,
+ issueNumber,
+ argThat(contains('-> master')),
+ ));
+ });
+
test('Acts on opened against dev', () async {
const int issueNumber = 123;