Merge "Downgrade default notify for bots on all comments"
This commit is contained in:
@@ -739,6 +739,19 @@ public class ChangeNotificationsIT extends AbstractNotificationTest {
|
||||
assertThat(sender).notSent(); // TODO(logan): Why not send to owner?
|
||||
}
|
||||
|
||||
@Test
|
||||
public void commentOnReviewableChangeByBot() throws Exception {
|
||||
StagedChange sc = stageReviewableChange();
|
||||
TestAccount bot = sc.testAccount("bot");
|
||||
review(bot, sc.changeId, ENABLED, null, "autogenerated:bot");
|
||||
assertThat(sender)
|
||||
.sent("comment", sc)
|
||||
.to(sc.owner)
|
||||
.cc(sc.reviewer, sc.ccer)
|
||||
.cc(sc.reviewerByEmail, sc.ccerByEmail)
|
||||
.noOneElse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void commentOnWipChangeByOwner() throws Exception {
|
||||
StagedChange sc = stageWipChange();
|
||||
@@ -770,7 +783,7 @@ public class ChangeNotificationsIT extends AbstractNotificationTest {
|
||||
public void commentOnWipChangeByBot() throws Exception {
|
||||
StagedChange sc = stageWipChange();
|
||||
TestAccount bot = sc.testAccount("bot");
|
||||
review(bot, sc.changeId, ENABLED, null, "tag");
|
||||
review(bot, sc.changeId, ENABLED, null, "autogenerated:tag");
|
||||
assertThat(sender).sent("comment", sc).to(sc.owner).noOneElse();
|
||||
}
|
||||
|
||||
@@ -778,7 +791,7 @@ public class ChangeNotificationsIT extends AbstractNotificationTest {
|
||||
public void commentOnReviewableWipChangeByBot() throws Exception {
|
||||
StagedChange sc = stageReviewableWipChange();
|
||||
TestAccount bot = sc.testAccount("bot");
|
||||
review(bot, sc.changeId, ENABLED, null, "tag");
|
||||
review(bot, sc.changeId, ENABLED, null, "autogenerated:tag");
|
||||
assertThat(sender).sent("comment", sc).to(sc.owner).noOneElse();
|
||||
}
|
||||
|
||||
|
||||
@@ -43,25 +43,33 @@ import java.util.Objects;
|
||||
*/
|
||||
@Singleton
|
||||
public class ChangeMessagesUtil {
|
||||
public static final String TAG_ABANDON = "autogenerated:gerrit:abandon";
|
||||
public static final String TAG_CHERRY_PICK_CHANGE = "autogenerated:gerrit:cherryPickChange";
|
||||
public static final String TAG_DELETE_ASSIGNEE = "autogenerated:gerrit:deleteAssignee";
|
||||
public static final String TAG_DELETE_REVIEWER = "autogenerated:gerrit:deleteReviewer";
|
||||
public static final String TAG_DELETE_VOTE = "autogenerated:gerrit:deleteVote";
|
||||
public static final String TAG_MERGED = "autogenerated:gerrit:merged";
|
||||
public static final String TAG_MOVE = "autogenerated:gerrit:move";
|
||||
public static final String TAG_RESTORE = "autogenerated:gerrit:restore";
|
||||
public static final String TAG_REVERT = "autogenerated:gerrit:revert";
|
||||
public static final String TAG_SET_ASSIGNEE = "autogenerated:gerrit:setAssignee";
|
||||
public static final String TAG_SET_DESCRIPTION = "autogenerated:gerrit:setPsDescription";
|
||||
public static final String TAG_SET_HASHTAGS = "autogenerated:gerrit:setHashtag";
|
||||
public static final String TAG_SET_PRIVATE = "autogenerated:gerrit:setPrivate";
|
||||
public static final String TAG_SET_READY = "autogenerated:gerrit:setReadyForReview";
|
||||
public static final String TAG_SET_TOPIC = "autogenerated:gerrit:setTopic";
|
||||
public static final String TAG_SET_WIP = "autogenerated:gerrit:setWorkInProgress";
|
||||
public static final String TAG_UNSET_PRIVATE = "autogenerated:gerrit:unsetPrivate";
|
||||
public static final String TAG_UPLOADED_PATCH_SET = "autogenerated:gerrit:newPatchSet";
|
||||
public static final String TAG_UPLOADED_WIP_PATCH_SET = "autogenerated:gerrit:newWipPatchSet";
|
||||
public static final String AUTOGENERATED_TAG_PREFIX = "autogenerated:";
|
||||
|
||||
public static final String TAG_ABANDON = AUTOGENERATED_TAG_PREFIX + "gerrit:abandon";
|
||||
public static final String TAG_CHERRY_PICK_CHANGE =
|
||||
AUTOGENERATED_TAG_PREFIX + "gerrit:cherryPickChange";
|
||||
public static final String TAG_DELETE_ASSIGNEE =
|
||||
AUTOGENERATED_TAG_PREFIX + "gerrit:deleteAssignee";
|
||||
public static final String TAG_DELETE_REVIEWER =
|
||||
AUTOGENERATED_TAG_PREFIX + "gerrit:deleteReviewer";
|
||||
public static final String TAG_DELETE_VOTE = AUTOGENERATED_TAG_PREFIX + "gerrit:deleteVote";
|
||||
public static final String TAG_MERGED = AUTOGENERATED_TAG_PREFIX + "gerrit:merged";
|
||||
public static final String TAG_MOVE = AUTOGENERATED_TAG_PREFIX + "gerrit:move";
|
||||
public static final String TAG_RESTORE = AUTOGENERATED_TAG_PREFIX + "gerrit:restore";
|
||||
public static final String TAG_REVERT = AUTOGENERATED_TAG_PREFIX + "gerrit:revert";
|
||||
public static final String TAG_SET_ASSIGNEE = AUTOGENERATED_TAG_PREFIX + "gerrit:setAssignee";
|
||||
public static final String TAG_SET_DESCRIPTION =
|
||||
AUTOGENERATED_TAG_PREFIX + "gerrit:setPsDescription";
|
||||
public static final String TAG_SET_HASHTAGS = AUTOGENERATED_TAG_PREFIX + "gerrit:setHashtag";
|
||||
public static final String TAG_SET_PRIVATE = AUTOGENERATED_TAG_PREFIX + "gerrit:setPrivate";
|
||||
public static final String TAG_SET_READY = AUTOGENERATED_TAG_PREFIX + "gerrit:setReadyForReview";
|
||||
public static final String TAG_SET_TOPIC = AUTOGENERATED_TAG_PREFIX + "gerrit:setTopic";
|
||||
public static final String TAG_SET_WIP = AUTOGENERATED_TAG_PREFIX + "gerrit:setWorkInProgress";
|
||||
public static final String TAG_UNSET_PRIVATE = AUTOGENERATED_TAG_PREFIX + "gerrit:unsetPrivate";
|
||||
public static final String TAG_UPLOADED_PATCH_SET =
|
||||
AUTOGENERATED_TAG_PREFIX + "gerrit:newPatchSet";
|
||||
public static final String TAG_UPLOADED_WIP_PATCH_SET =
|
||||
AUTOGENERATED_TAG_PREFIX + "gerrit:newWipPatchSet";
|
||||
|
||||
public static ChangeMessage newMessage(ChangeContext ctx, String body, @Nullable String tag) {
|
||||
return newMessage(ctx.getChange().currentPatchSetId(), ctx.getUser(), ctx.getWhen(), body, tag);
|
||||
@@ -125,4 +133,12 @@ public class ChangeMessagesUtil {
|
||||
update.setTag(changeMessage.getTag());
|
||||
db.changeMessages().insert(Collections.singleton(changeMessage));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param tag value of a tag, or null.
|
||||
* @return whether the tag starts with the autogenerated prefix.
|
||||
*/
|
||||
public static boolean isAutogenerated(@Nullable String tag) {
|
||||
return tag != null && tag.startsWith(AUTOGENERATED_TAG_PREFIX);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,18 +325,17 @@ public class PostReview
|
||||
}
|
||||
|
||||
private NotifyHandling defaultNotify(Change c, ReviewInput in) {
|
||||
if (!c.isWorkInProgress()) {
|
||||
return NotifyHandling.ALL;
|
||||
if (ChangeMessagesUtil.isAutogenerated(in.tag)) {
|
||||
// Autogenerated comments default to lower notify levels.
|
||||
return c.isWorkInProgress() ? NotifyHandling.OWNER : NotifyHandling.OWNER_REVIEWERS;
|
||||
}
|
||||
if (in.tag != null) {
|
||||
// Treat the presence of tag as indicator of a "bot".
|
||||
return NotifyHandling.OWNER;
|
||||
}
|
||||
if (!c.hasReviewStarted()) {
|
||||
// If review hasn't started we want to minimize recipients, even on
|
||||
// "human" comments.
|
||||
|
||||
if (c.isWorkInProgress() && !c.hasReviewStarted()) {
|
||||
// If review hasn't started we want to minimize recipients, no matter who
|
||||
// the author is.
|
||||
return NotifyHandling.OWNER;
|
||||
}
|
||||
|
||||
return NotifyHandling.ALL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user