List reviewers with dummy approvals on closed changes
Teams that allow submit bypassing review in some form or other may want to add reviewers to a change after it has been submitted. This was allowed, but the result was not being returned by ChangeJson in the closed change case. Change-Id: Ibfd3728993d9eacfe0e0002275d9a956d6e79024
This commit is contained in:
@@ -129,6 +129,27 @@ public class ChangeIT extends AbstractDaemonTest {
|
|||||||
assertEquals(ImmutableSet.of(user.id), getReviewers(cApi.get()));
|
assertEquals(ImmutableSet.of(user.id), getReviewers(cApi.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void addReviewerToClosedChange() throws GitAPIException,
|
||||||
|
IOException, RestApiException {
|
||||||
|
PushOneCommit.Result r = createChange();
|
||||||
|
ChangeApi cApi = gApi.changes().id("p~master~" + r.getChangeId());
|
||||||
|
cApi.revision(r.getCommit().name())
|
||||||
|
.review(ReviewInput.approve());
|
||||||
|
cApi.revision(r.getCommit().name())
|
||||||
|
.submit();
|
||||||
|
|
||||||
|
assertEquals(ImmutableSet.of(admin.getId()), getReviewers(cApi.get()));
|
||||||
|
|
||||||
|
AddReviewerInput in = new AddReviewerInput();
|
||||||
|
in.reviewer = user.email;
|
||||||
|
gApi.changes()
|
||||||
|
.id("p~master~" + r.getChangeId())
|
||||||
|
.addReviewer(in);
|
||||||
|
assertEquals(ImmutableSet.of(admin.getId(), user.id),
|
||||||
|
getReviewers(cApi.get()));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createEmptyChange() throws RestApiException {
|
public void createEmptyChange() throws RestApiException {
|
||||||
ChangeInfo in = new ChangeInfo();
|
ChangeInfo in = new ChangeInfo();
|
||||||
|
@@ -565,19 +565,20 @@ public class ChangeJson {
|
|||||||
allUsers.add(psa.getAccountId());
|
allUsers.add(psa.getAccountId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We can only approximately reconstruct what the submit rule evaluator
|
||||||
|
// would have done. These should really come from a stored submit record.
|
||||||
Set<String> labelNames = Sets.newHashSet();
|
Set<String> labelNames = Sets.newHashSet();
|
||||||
Multimap<Account.Id, PatchSetApproval> current = HashMultimap.create();
|
Multimap<Account.Id, PatchSetApproval> current = HashMultimap.create();
|
||||||
for (PatchSetApproval a : cd.currentApprovals()) {
|
for (PatchSetApproval a : cd.currentApprovals()) {
|
||||||
LabelType type = labelTypes.byLabel(a.getLabelId());
|
LabelType type = labelTypes.byLabel(a.getLabelId());
|
||||||
if (type != null && a.getValue() != 0) {
|
if (type != null) {
|
||||||
labelNames.add(type.getName());
|
labelNames.add(type.getName());
|
||||||
|
// Not worth the effort to distinguish between votable/non-votable for 0
|
||||||
|
// values on closed changes, since they can't vote anyway.
|
||||||
current.put(a.getAccountId(), a);
|
current.put(a.getAccountId(), a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We can only approximately reconstruct what the submit rule evaluator
|
|
||||||
// would have done. These should really come from a stored submit record.
|
|
||||||
//
|
|
||||||
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
||||||
Map<String, LabelInfo> labels = new TreeMap<>(labelTypes.nameComparator());
|
Map<String, LabelInfo> labels = new TreeMap<>(labelTypes.nameComparator());
|
||||||
for (String name : labelNames) {
|
for (String name : labelNames) {
|
||||||
|
Reference in New Issue
Block a user