AbstractQueryChangesTest: Add test for query with multiple labels
Test that the result is as expected for queries like: label:Code-Review>=+1 label:Verified=+1 Bug: Issue 8589 Change-Id: I7f7f004789e4c6cee04881105dbff6fad9679572
This commit is contained in:
@@ -17,6 +17,9 @@ package com.google.gerrit.server.query.change;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.TruthJUnit.assume;
|
||||
import static com.google.gerrit.extensions.client.ListChangesOption.REVIEWED;
|
||||
import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
|
||||
import static com.google.gerrit.server.project.Util.category;
|
||||
import static com.google.gerrit.server.project.Util.value;
|
||||
import static java.util.concurrent.TimeUnit.HOURS;
|
||||
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
@@ -33,6 +36,8 @@ import com.google.common.collect.Lists;
|
||||
import com.google.common.truth.ThrowableSubject;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.common.data.LabelType;
|
||||
import com.google.gerrit.common.data.Permission;
|
||||
import com.google.gerrit.extensions.api.GerritApi;
|
||||
import com.google.gerrit.extensions.api.changes.AddReviewerInput;
|
||||
import com.google.gerrit.extensions.api.changes.Changes.QueryRequest;
|
||||
@@ -72,6 +77,8 @@ import com.google.gerrit.server.change.ChangeInserter;
|
||||
import com.google.gerrit.server.change.ChangeTriplet;
|
||||
import com.google.gerrit.server.change.PatchSetInserter;
|
||||
import com.google.gerrit.server.config.AllUsersName;
|
||||
import com.google.gerrit.server.git.MetaDataUpdate;
|
||||
import com.google.gerrit.server.git.ProjectConfig;
|
||||
import com.google.gerrit.server.git.validators.CommitValidators;
|
||||
import com.google.gerrit.server.index.IndexConfig;
|
||||
import com.google.gerrit.server.index.QueryOptions;
|
||||
@@ -84,6 +91,8 @@ import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.notedb.NoteDbChangeState;
|
||||
import com.google.gerrit.server.notedb.NoteDbChangeState.PrimaryStorage;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.project.ProjectCache;
|
||||
import com.google.gerrit.server.project.Util;
|
||||
import com.google.gerrit.server.schema.SchemaCreator;
|
||||
import com.google.gerrit.server.update.BatchUpdate;
|
||||
import com.google.gerrit.server.util.RequestContext;
|
||||
@@ -152,6 +161,9 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests {
|
||||
@Inject protected SchemaCreator schemaCreator;
|
||||
@Inject protected Sequences seq;
|
||||
@Inject protected ThreadLocalRequestContext requestContext;
|
||||
@Inject protected ProjectCache projectCache;
|
||||
@Inject protected MetaDataUpdate.Server metaDataUpdateFactory;
|
||||
@Inject protected IdentifiedUser.GenericFactory identifiedUserFactory;
|
||||
|
||||
protected Injector injector;
|
||||
protected LifecycleManager lifecycle;
|
||||
@@ -672,6 +684,68 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests {
|
||||
assertQuery("label:Code-Review=-2,owner", reviewMinus2Change);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void byLabelMulti() throws Exception {
|
||||
TestRepository<Repo> repo = createProject("repo");
|
||||
Project.NameKey project =
|
||||
new Project.NameKey(repo.getRepository().getDescription().getRepositoryName());
|
||||
ProjectConfig cfg = projectCache.checkedGet(project).getConfig();
|
||||
|
||||
LabelType verified =
|
||||
category("Verified", value(1, "Passes"), value(0, "No score"), value(-1, "Failed"));
|
||||
cfg.getLabelSections().put(verified.getName(), verified);
|
||||
|
||||
String heads = RefNames.REFS_HEADS + "*";
|
||||
Util.allow(cfg, Permission.forLabel(Util.verified().getName()), -1, 1, REGISTERED_USERS, heads);
|
||||
|
||||
try (MetaDataUpdate md = metaDataUpdateFactory.create(project)) {
|
||||
cfg.commit(md);
|
||||
}
|
||||
projectCache.evict(cfg.getProject());
|
||||
|
||||
ReviewInput reviewVerified = new ReviewInput().label("Verified", 1);
|
||||
ChangeInserter ins = newChange(repo, null, null, null, null);
|
||||
ChangeInserter ins2 = newChange(repo, null, null, null, null);
|
||||
ChangeInserter ins3 = newChange(repo, null, null, null, null);
|
||||
ChangeInserter ins4 = newChange(repo, null, null, null, null);
|
||||
ChangeInserter ins5 = newChange(repo, null, null, null, null);
|
||||
|
||||
// CR+1
|
||||
Change reviewCRplus1 = insert(repo, ins);
|
||||
gApi.changes().id(reviewCRplus1.getId().get()).current().review(ReviewInput.recommend());
|
||||
|
||||
// CR+2
|
||||
Change reviewCRplus2 = insert(repo, ins2);
|
||||
gApi.changes().id(reviewCRplus2.getId().get()).current().review(ReviewInput.approve());
|
||||
|
||||
// CR+1 VR+1
|
||||
Change reviewCRplus1VRplus1 = insert(repo, ins3);
|
||||
gApi.changes().id(reviewCRplus1VRplus1.getId().get()).current().review(ReviewInput.recommend());
|
||||
gApi.changes().id(reviewCRplus1VRplus1.getId().get()).current().review(reviewVerified);
|
||||
|
||||
// CR+2 VR+1
|
||||
Change reviewCRplus2VRplus1 = insert(repo, ins4);
|
||||
gApi.changes().id(reviewCRplus2VRplus1.getId().get()).current().review(ReviewInput.approve());
|
||||
gApi.changes().id(reviewCRplus2VRplus1.getId().get()).current().review(reviewVerified);
|
||||
|
||||
// VR+1
|
||||
Change reviewVRplus1 = insert(repo, ins5);
|
||||
gApi.changes().id(reviewVRplus1.getId().get()).current().review(reviewVerified);
|
||||
|
||||
assertQuery("label:Code-Review=+1", reviewCRplus1VRplus1, reviewCRplus1);
|
||||
assertQuery(
|
||||
"label:Code-Review>=+1",
|
||||
reviewCRplus2VRplus1,
|
||||
reviewCRplus1VRplus1,
|
||||
reviewCRplus2,
|
||||
reviewCRplus1);
|
||||
assertQuery("label:Code-Review>=+2", reviewCRplus2VRplus1, reviewCRplus2);
|
||||
|
||||
assertQuery(
|
||||
"label:Code-Review>=+1 label:Verified=+1", reviewCRplus2VRplus1, reviewCRplus1VRplus1);
|
||||
assertQuery("label:Code-Review>=+2 label:Verified=+1", reviewCRplus2VRplus1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void byLabelNotOwner() throws Exception {
|
||||
TestRepository<Repo> repo = createProject("repo");
|
||||
|
||||
Reference in New Issue
Block a user