StickyApprovalsIT: Also cover change kind NO_CHANGE Change-Id: I69e773ce7f578005b0dc8e96cea96e09180884b8 Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java index 4da22d3..dd2fd3a 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java
@@ -16,6 +16,7 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.gerrit.extensions.client.ChangeKind.MERGE_FIRST_PARENT_UPDATE; +import static com.google.gerrit.extensions.client.ChangeKind.NO_CHANGE; import static com.google.gerrit.extensions.client.ChangeKind.NO_CODE_CHANGE; import static com.google.gerrit.extensions.client.ChangeKind.REWORK; import static com.google.gerrit.extensions.client.ChangeKind.TRIVIAL_REBASE; @@ -72,10 +73,12 @@ value(0, "No score"), value(-1, "I would prefer that you didn't submit this"), value(-2, "Do not submit")); + codeReview.setCopyAllScoresIfNoChange(false); cfg.getLabelSections().put(codeReview.getName(), codeReview); LabelType verified = category("Verified", value(1, "Passes"), value(0, "No score"), value(-1, "Failed")); + verified.setCopyAllScoresIfNoChange(false); cfg.getLabelSections().put(verified.getName(), verified); AccountGroup.UUID registeredUsers = @@ -91,7 +94,7 @@ @Test public void notSticky() throws Exception { assertNotSticky(EnumSet.of(REWORK, TRIVIAL_REBASE, NO_CODE_CHANGE, - MERGE_FIRST_PARENT_UPDATE)); + MERGE_FIRST_PARENT_UPDATE, NO_CHANGE)); } @Test @@ -101,7 +104,7 @@ saveProjectConfig(project, cfg); for (ChangeKind changeKind : EnumSet.of(REWORK, TRIVIAL_REBASE, - NO_CODE_CHANGE, MERGE_FIRST_PARENT_UPDATE)) { + NO_CODE_CHANGE, MERGE_FIRST_PARENT_UPDATE, NO_CHANGE)) { testRepo.reset(getRemoteHead()); String changeId = createChange(changeKind); @@ -122,7 +125,7 @@ saveProjectConfig(project, cfg); for (ChangeKind changeKind : EnumSet.of(REWORK, TRIVIAL_REBASE, - NO_CODE_CHANGE, MERGE_FIRST_PARENT_UPDATE)) { + NO_CODE_CHANGE, MERGE_FIRST_PARENT_UPDATE, NO_CHANGE)) { testRepo.reset(getRemoteHead()); String changeId = createChange(changeKind); @@ -147,8 +150,13 @@ vote(admin, changeId, 2, 1); vote(user, changeId, -2, -1); - updateChange(changeId, TRIVIAL_REBASE); + updateChange(changeId, NO_CHANGE); ChangeInfo c = detailedChange(changeId); + assertVotes(c, admin, 2, 0, NO_CHANGE); + assertVotes(c, user, -2, 0, NO_CHANGE); + + updateChange(changeId, TRIVIAL_REBASE); + c = detailedChange(changeId); assertVotes(c, admin, 2, 0, TRIVIAL_REBASE); assertVotes(c, user, -2, 0, TRIVIAL_REBASE); @@ -189,8 +197,13 @@ vote(admin, changeId, 2, 1); vote(user, changeId, -2, -1); - updateChange(changeId, NO_CODE_CHANGE); + updateChange(changeId, NO_CHANGE); ChangeInfo c = detailedChange(changeId); + assertVotes(c, admin, 0, 1, NO_CHANGE); + assertVotes(c, user, 0, -1, NO_CHANGE); + + updateChange(changeId, NO_CODE_CHANGE); + c = detailedChange(changeId); assertVotes(c, admin, 0, 1, NO_CODE_CHANGE); assertVotes(c, user, 0, -1, NO_CODE_CHANGE); @@ -209,8 +222,13 @@ vote(admin, changeId, 2, 1); vote(user, changeId, -2, -1); - updateChange(changeId, MERGE_FIRST_PARENT_UPDATE); + updateChange(changeId, NO_CHANGE); ChangeInfo c = detailedChange(changeId); + assertVotes(c, admin, 2, 0, NO_CHANGE); + assertVotes(c, user, -2, 0, NO_CHANGE); + + updateChange(changeId, MERGE_FIRST_PARENT_UPDATE); + c = detailedChange(changeId); assertVotes(c, admin, 2, 0, MERGE_FIRST_PARENT_UPDATE); assertVotes(c, user, -2, 0, MERGE_FIRST_PARENT_UPDATE); @@ -226,7 +244,7 @@ saveProjectConfig(project, cfg); for (ChangeKind changeKind : EnumSet.of(REWORK, TRIVIAL_REBASE, - NO_CODE_CHANGE, MERGE_FIRST_PARENT_UPDATE)) { + NO_CODE_CHANGE, MERGE_FIRST_PARENT_UPDATE, NO_CHANGE)) { testRepo.reset(getRemoteHead()); String changeId = createChange(changeKind); @@ -319,7 +337,6 @@ .setCopyMaxScore(true); saveProjectConfig(project, cfg); - // Vote max score on PS1 String changeId = createChange(REWORK); vote(admin, changeId, label, 2); @@ -384,6 +401,8 @@ updateFirstParent(changeId); return; case NO_CHANGE: + noChange(changeId); + return; default: fail("unexpected change kind: " + changeKind); } @@ -400,6 +419,21 @@ assertThat(getChangeKind(changeId)).isEqualTo(NO_CODE_CHANGE); } + private void noChange(String changeId) throws Exception { + ChangeInfo change = gApi.changes().id(changeId).get(); + String commitMessage = + change.revisions.get(change.currentRevision).commit.message; + + TestRepository<?>.CommitBuilder commitBuilder = + testRepo.amendRef("HEAD").insertChangeId(changeId.substring(1)); + commitBuilder.message(commitMessage) + .author(admin.getIdent()) + .committer(new PersonIdent(admin.getIdent(), testRepo.getDate())); + commitBuilder.create(); + GitUtil.pushHead(testRepo, "refs/for/master", false); + assertThat(getChangeKind(changeId)).isEqualTo(NO_CHANGE); + } + private void rework(String changeId) throws Exception { PushOneCommit push = pushFactory.create(db, admin.getIdent(), testRepo, PushOneCommit.SUBJECT, PushOneCommit.FILE_NAME,