Merge "Allow to set fallback code owners for a project via REST"
diff --git a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnersOnPostReview.java b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnersOnPostReview.java
index 68573a4..f53d831 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnersOnPostReview.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnersOnPostReview.java
@@ -83,8 +83,7 @@
if (oldApprovals.get(requiredApproval.labelType().getName()) == null) {
// If oldApprovals doesn't contain the label or if the labels value in it is null, the label
// was not changed.
- // This either means that the user only voted on unrelated labels, or that the user applied
- // the exact same code owner approval again, that was already present.
+ // This means that the user only voted on unrelated labels.
return Optional.empty();
}
diff --git a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnPostReviewIT.java b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnPostReviewIT.java
index 761472b..5c3f509 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnPostReviewIT.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnPostReviewIT.java
@@ -90,7 +90,7 @@
}
@Test
- public void changeMessageNotExtended_sameCodeOwnerApprovalAppliedAgain() throws Exception {
+ public void changeMessageExtended_sameCodeOwnerApprovalAppliedAgain() throws Exception {
codeOwnerConfigOperations
.newCodeOwnerConfig()
.project(project)
@@ -109,13 +109,22 @@
// Apply the Code-Review+1 approval again
recommend(changeId);
- // Check that no new change message was added.
- // Gerrit core omits the change message if no vote was changed.
- assertThat(gApi.changes().id(changeId).get().messages.size()).isEqualTo(messageCount);
+ Collection<ChangeMessageInfo> messages = gApi.changes().id(changeId).get().messages;
+ // Check that a new change message was added.
+ assertThat(messages.size()).isEqualTo(messageCount + 1);
+
+ assertThat(Iterables.getLast(messages).message)
+ .isEqualTo(
+ String.format(
+ "Patch Set 1: Code-Review+1\n\n"
+ + "By voting Code-Review+1 the following files are still code-owner approved by"
+ + " %s:\n"
+ + "* %s\n",
+ admin.fullName(), path));
}
@Test
- public void changeMessageNotExtended_sameCodeOwnerApprovalAppliedAgainTogetherWithOtherLabel()
+ public void changeMessageExtended_sameCodeOwnerApprovalAppliedAgainTogetherWithOtherLabel()
throws Exception {
LabelDefinitionInput input = new LabelDefinitionInput();
input.values = ImmutableMap.of("+1", "Other", " 0", "Approved");
@@ -153,11 +162,18 @@
// The message is unchanged, since reapplying the same code owner approval is ignored by Gerrit
// core (the change message only mentions the new vote, but not the reapplied vote).
Collection<ChangeMessageInfo> messages = gApi.changes().id(changeId).get().messages;
- assertThat(Iterables.getLast(messages).message).isEqualTo("Patch Set 1: Other+1");
+ assertThat(Iterables.getLast(messages).message)
+ .isEqualTo(
+ String.format(
+ "Patch Set 1: Code-Review+1 Other+1\n\n"
+ + "By voting Code-Review+1 the following files are still code-owner approved by"
+ + " %s:\n"
+ + "* %s\n",
+ admin.fullName(), path));
}
@Test
- public void changeMessageNotExtended_sameCodeOwnerApprovalAppliedAgainTogetherWithComment()
+ public void changeMessageExtended_sameCodeOwnerApprovalAppliedAgainTogetherWithComment()
throws Exception {
LabelDefinitionInput input = new LabelDefinitionInput();
input.values = ImmutableMap.of("+1", "Other", " 0", "Approved");
@@ -193,14 +209,21 @@
commentInput.message = "some comment";
commentInput.path = path;
ReviewInput reviewInput = ReviewInput.recommend();
- reviewInput.comments = reviewInput.comments = new HashMap<>();
+ reviewInput.comments = new HashMap<>();
reviewInput.comments.put(commentInput.path, Lists.newArrayList(commentInput));
gApi.changes().id(changeId).current().review(reviewInput);
// The message is unchanged, since reapplying the same code owner approval is ignored by Gerrit
// core (the change message only mentions the comment, but not the reapplied vote).
Collection<ChangeMessageInfo> messages = gApi.changes().id(changeId).get().messages;
- assertThat(Iterables.getLast(messages).message).isEqualTo("Patch Set 1:\n\n" + "(1 comment)");
+ assertThat(Iterables.getLast(messages).message)
+ .isEqualTo(
+ String.format(
+ "Patch Set 1: Code-Review+1\n\n(1 comment)\n\n"
+ + "By voting Code-Review+1 the following files are still code-owner approved by"
+ + " %s:\n"
+ + "* %s\n",
+ admin.fullName(), path));
}
@Test
@@ -864,7 +887,7 @@
commentInput.message = "some comment";
commentInput.path = path;
ReviewInput reviewInput = ReviewInput.recommend();
- reviewInput.comments = reviewInput.comments = new HashMap<>();
+ reviewInput.comments = new HashMap<>();
reviewInput.comments.put(commentInput.path, Lists.newArrayList(commentInput));
gApi.changes().id(changeId).current().review(reviewInput);
diff --git a/resources/Documentation/config.md b/resources/Documentation/config.md
index 705c5de..2753850 100644
--- a/resources/Documentation/config.md
+++ b/resources/Documentation/config.md
@@ -46,7 +46,7 @@
This allows branches to opt-out of the code owners functionality.\
Can be set multiple times.\
Can be overridden per project by setting
- [codeOwners.disabledBrancg](#codeOwnersDisabledBranch) in
+ [codeOwners.disabledBranch](#codeOwnersDisabledBranch) in
`@PLUGIN@.config`.\
By default unset.