diff options
Diffstat (limited to 'javatests/com/google/gerrit/acceptance/api/change/SubmitWithStickyApprovalDiffIT.java')
-rw-r--r-- | javatests/com/google/gerrit/acceptance/api/change/SubmitWithStickyApprovalDiffIT.java | 64 |
1 files changed, 50 insertions, 14 deletions
diff --git a/javatests/com/google/gerrit/acceptance/api/change/SubmitWithStickyApprovalDiffIT.java b/javatests/com/google/gerrit/acceptance/api/change/SubmitWithStickyApprovalDiffIT.java index 5124d113c5..77582c6e06 100644 --- a/javatests/com/google/gerrit/acceptance/api/change/SubmitWithStickyApprovalDiffIT.java +++ b/javatests/com/google/gerrit/acceptance/api/change/SubmitWithStickyApprovalDiffIT.java @@ -19,6 +19,7 @@ import static com.google.gerrit.acceptance.testsuite.project.TestProjectUpdate.a import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS; import static com.google.gerrit.server.project.testing.TestLabels.labelBuilder; import static com.google.gerrit.server.project.testing.TestLabels.value; +import static com.google.gerrit.testing.GerritJUnit.assertThrows; import static org.eclipse.jgit.lib.Constants.HEAD; import com.google.common.collect.ImmutableList; @@ -35,6 +36,7 @@ import com.google.gerrit.entities.RefNames; import com.google.gerrit.extensions.api.changes.RebaseInput; import com.google.gerrit.extensions.api.changes.ReviewInput; import com.google.gerrit.extensions.api.changes.ReviewInput.CommentInput; +import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.server.project.testing.TestLabels; import com.google.inject.Inject; import java.util.HashSet; @@ -59,8 +61,8 @@ public class SubmitWithStickyApprovalDiffIT extends AbstractDaemonTest { value(2, "Looks good to me, approved"), value(1, "Looks good to me, but someone else must approve"), value(0, "No score"), - value(-1, "I would prefer that you didn't submit this"), - value(-2, "Do not submit")); + value(-1, "I would prefer this is not submitted as is"), + value(-2, "This shall not be submitted")); codeReview.setCopyAnyScore(true); u.getConfig().upsertLabelType(codeReview.build()); u.save(); @@ -345,8 +347,8 @@ public class SubmitWithStickyApprovalDiffIT extends AbstractDaemonTest { } @Test - @GerritConfig(name = "change.cumulativeCommentSizeLimit", value = "1k") - public void autoGeneratedPostSubmitDiffIsNotPartOfTheCommentSizeLimit() throws Exception { + @GerritConfig(name = "change.cumulativeCommentSizeLimit", value = "10k") + public void autoGeneratedPostSubmitDiffIsPartOfTheCommentSizeLimit() throws Exception { Change.Id changeId = changeOperations.newChange().project(project).file("file").content("content").create(); gApi.changes().id(changeId.get()).current().review(ReviewInput.approve()); @@ -356,35 +358,69 @@ public class SubmitWithStickyApprovalDiffIT extends AbstractDaemonTest { // Post a submit diff that is almost the cumulativeCommentSizeLimit gApi.changes().id(changeId.get()).current().submit(); assertThat(Iterables.getLast(gApi.changes().id(changeId.get()).messages()).message) - .doesNotContain("many unreviewed changes"); + .doesNotContain("The diff is too large to show. Please review the diff"); - // unrelated comment and change message posting works fine, since the post submit diff is not + // unrelated comment and change message posting doesn't work, since the post submit diff is // counted towards the cumulativeCommentSizeLimit for unrelated follow-up comments. - // 800 + 400 + 400 > 1k, but 400 + 400 < 1k, hence these comments are accepted (the original - // 800 is not counted). - String message = new String(new char[400]).replace("\0", "a"); + // 800 + 9500 > 10k. + String message = new String(new char[9500]).replace("\0", "a"); ReviewInput reviewInput = new ReviewInput().message(message); CommentInput commentInput = new CommentInput(); commentInput.line = 1; - commentInput.message = message; commentInput.path = "file"; reviewInput.comments = ImmutableMap.of("file", ImmutableList.of(commentInput)); - gApi.changes().id(changeId.get()).current().review(reviewInput); + BadRequestException thrown = + assertThrows( + BadRequestException.class, + () -> gApi.changes().id(changeId.get()).current().review(reviewInput)); + assertThat(thrown) + .hasMessageThat() + .contains("Exceeding maximum cumulative size of comments and change messages"); } @Test - @GerritConfig(name = "change.cumulativeCommentSizeLimit", value = "1k") public void postSubmitDiffCannotBeTooBig() throws Exception { Change.Id changeId = changeOperations.newChange().project(project).file("file").content("content").create(); gApi.changes().id(changeId.get()).current().review(ReviewInput.approve()); - String content = new String(new char[1100]).replace("\0", "a"); + // max post submit diff size is 300k + String content = new String(new char[320000]).replace("\0", "a"); + + changeOperations.change(changeId).newPatchset().file("file").content(content).create(); + + // Post submit diff is over the postSubmitDiffSizeLimit (300k). + gApi.changes().id(changeId.get()).current().submit(); + assertThat(Iterables.getLast(gApi.changes().id(changeId.get()).messages()).message) + .isEqualTo( + "Change has been successfully merged\n\n1 is the latest approved patch-set.\nThe " + + "change was submitted with unreviewed changes in the following " + + "files:\n\n```\nThe name of the file: file\nInsertions: 1, Deletions: 1.\n\nThe" + + " diff is too large to show. Please review the diff.\n```\n"); + } + + @Test + @GerritConfig(name = "change.cumulativeCommentSizeLimit", value = "10k") + public void postSubmitDiffCannotBeTooBigWithLargeComments() throws Exception { + Change.Id changeId = + changeOperations.newChange().project(project).file("file").content("content").create(); + gApi.changes().id(changeId.get()).current().review(ReviewInput.approve()); + + // unrelated comment taking up most of the space, making post submit diff shorter. + String message = new String(new char[9700]).replace("\0", "a"); + ReviewInput reviewInput = new ReviewInput().message(message); + CommentInput commentInput = new CommentInput(); + commentInput.line = 1; + commentInput.path = "file"; + reviewInput.comments = ImmutableMap.of("file", ImmutableList.of(commentInput)); + gApi.changes().id(changeId.get()).current().review(reviewInput); + String content = new String(new char[500]).replace("\0", "a"); changeOperations.change(changeId).newPatchset().file("file").content(content).create(); - // Post submit diff is over the cumulativeCommentSizeLimit, so we shorten the message. + // Post submit diff is over the cumulativeCommentSizeLimit, since the comment took most of + // the space (even though the post submit diff is not limited). gApi.changes().id(changeId.get()).current().submit(); assertThat(Iterables.getLast(gApi.changes().id(changeId.get()).messages()).message) .isEqualTo( |