Merge "Adjust to changes in Gerrit core"
diff --git a/src/main/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslator.java b/src/main/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslator.java
index bea7df0..0808bb1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslator.java
@@ -16,7 +16,6 @@
import static com.google.gerrit.server.project.ProjectCache.illegalState;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.google.gerrit.common.Nullable;
@@ -81,7 +80,7 @@
}
static void applyCopyScoreRulesTo(
- Set<String> copyScoreRules, Set<String> disallowedCopyScoreRules, LabelType labelType)
+ Set<String> copyScoreRules, Set<String> disallowedCopyScoreRules, LabelType.Builder labelType)
throws BadRequestException {
Set<String> disallowed =
Sets.intersection(ImmutableSet.copyOf(copyScoreRules), disallowedCopyScoreRules);
@@ -150,23 +149,16 @@
.orElseThrow(illegalState(projectConfig.getName()));
projectState.getLabelTypes().getLabelTypes().stream()
.filter(l -> l.getName().equals(entry.getKey()))
- .filter(l -> l.canOverride())
- .forEach(l -> copiedLabelTypes.put(l.getName(), copyLabelType(l)));
+ .filter(l -> l.isCanOverride())
+ .forEach(l -> copiedLabelTypes.put(l.getName(), l));
}
String label = entry.getKey();
LabelDefinition definition = entry.getValue();
- LabelType labelType = projectConfig.getLabelSections().get(label);
-
- if (labelType == null) {
+ if (projectConfig.getLabelSections().get(label) == null) {
throw new BadRequestException(
"The label " + label + " does not exist. You can't change its config.");
}
-
- if (definition.ignoreSelfApproval != null) {
- labelType.setIgnoreSelfApproval(definition.ignoreSelfApproval);
- }
-
if (definition.getFunction().isPresent()) {
Set<String> disallowedLabelFunctions =
ImmutableSet.copyOf(
@@ -175,14 +167,25 @@
if (disallowedLabelFunctions.contains(function.getFunctionName())) {
throw new BadRequestException(function.getFunctionName() + " disallowed");
}
- labelType.setFunction(function);
}
+ projectConfig.updateLabelType(
+ label,
+ labelType -> {
+ if (definition.ignoreSelfApproval != null) {
+ labelType.setIgnoreSelfApproval(definition.ignoreSelfApproval);
+ }
+ if (definition.getFunction().isPresent()) {
+ labelType.setFunction(definition.getFunction().get());
+ }
+ });
if (definition.copyScoreRules != null) {
+ LabelType.Builder builder = projectConfig.getLabelSections().get(label).toBuilder();
Set<String> disallowedCopyScoreRules =
ImmutableSet.copyOf(
hostPluginConfig.getStringList("disallowedCopyScoreRules-" + label));
- applyCopyScoreRulesTo(definition.copyScoreRules, disallowedCopyScoreRules, labelType);
+ applyCopyScoreRulesTo(definition.copyScoreRules, disallowedCopyScoreRules, builder);
+ projectConfig.upsertLabelType(builder.build());
}
}
}
@@ -197,7 +200,7 @@
labelDefinition.function = labelType.getFunction().getFunctionName();
extractLabelCopyScoreRules(labelType, labelDefinition);
- labelDefinition.ignoreSelfApproval = labelType.ignoreSelfApproval();
+ labelDefinition.ignoreSelfApproval = labelType.isIgnoreSelfApproval();
}
private static void applyCommentRulesTo(@Nullable CommentsRules comments, PluginConfig config) {
@@ -208,23 +211,4 @@
SimpleSubmitRulesConfig.KEY_BLOCK_IF_UNRESOLVED_COMMENTS,
comments.blockIfUnresolvedComments);
}
-
- private static LabelType copyLabelType(LabelType label) {
- // TODO(hiesel) Move this to core
- LabelType copy = new LabelType(label.getName(), ImmutableList.copyOf(label.getValues()));
- if (label.getRefPatterns() != null) {
- copy.setRefPatterns(ImmutableList.copyOf(label.getRefPatterns()));
- }
- copy.setAllowPostSubmit(label.allowPostSubmit());
- copy.setCanOverride(label.canOverride());
- copy.setCopyAllScoresIfNoChange(label.isCopyAllScoresIfNoChange());
- copy.setCopyAllScoresIfNoCodeChange(label.isCopyAllScoresIfNoCodeChange());
- copy.setCopyAllScoresOnMergeFirstParentUpdate(label.isCopyAllScoresOnMergeFirstParentUpdate());
- copy.setCopyAllScoresOnTrivialRebase(label.isCopyAllScoresOnTrivialRebase());
- copy.setIgnoreSelfApproval(label.ignoreSelfApproval());
- copy.setCopyMaxScore(label.isCopyMaxScore());
- copy.setCopyMinScore(label.isCopyMinScore());
- copy.setFunction(label.getFunction());
- return copy;
- }
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/PluginIT.java b/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/PluginIT.java
index b0d8be2..91276af 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/PluginIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/PluginIT.java
@@ -140,7 +140,11 @@
// Check that the label has the same configs besides the function, which we changed
LabelType allProjectsCR = projectCache.getAllProjects().getLabelTypes().byLabel("Code-Review");
- localCR.setFunction(allProjectsCR.getFunction());
+ projectCache
+ .get(project)
+ .get()
+ .getConfig()
+ .updateLabelType("Code-Review", lt -> lt.setFunction(allProjectsCR.getFunction()));
assertLabelTypeEquals(localCR, allProjectsCR);
}
@@ -167,15 +171,15 @@
}
private static void assertLabelTypeEquals(LabelType l1, LabelType l2) {
- assertThat(l1.allowPostSubmit()).isEqualTo(l2.allowPostSubmit());
- assertThat(l1.canOverride()).isEqualTo(l2.canOverride());
+ assertThat(l1.isAllowPostSubmit()).isEqualTo(l2.isAllowPostSubmit());
+ assertThat(l1.isCanOverride()).isEqualTo(l2.isCanOverride());
assertThat(l1.getDefaultValue()).isEqualTo(l2.getDefaultValue());
assertThat(l1.getLabelId()).isEqualTo(l2.getLabelId());
assertThat(l1.getMax()).isEqualTo(l2.getMax());
assertThat(l1.getMin()).isEqualTo(l2.getMin());
assertThat(l1.getName()).isEqualTo(l2.getName());
assertThat(l1.getRefPatterns()).isEqualTo(l2.getRefPatterns());
- assertThat(l1.ignoreSelfApproval()).isEqualTo(l2.ignoreSelfApproval());
+ assertThat(l1.isIgnoreSelfApproval()).isEqualTo(l2.isIgnoreSelfApproval());
assertThat(l1.isCopyAllScoresIfNoChange()).isEqualTo(l2.isCopyAllScoresIfNoChange());
assertThat(l1.isCopyAllScoresIfNoCodeChange()).isEqualTo(l2.isCopyAllScoresIfNoCodeChange());
assertThat(l1.isCopyAllScoresOnMergeFirstParentUpdate())
diff --git a/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslatorTest.java b/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslatorTest.java
index 05b7bf0..a7c8f18 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslatorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/simplesubmitrules/config/ConfigTranslatorTest.java
@@ -29,28 +29,28 @@
public class ConfigTranslatorTest {
@Test
public void checkLabelTranslation() throws Exception {
- checkTranslation("copyMinScore", LabelType::isCopyMinScore, LabelType::setCopyMinScore);
- checkTranslation("copyMaxScore", LabelType::isCopyMaxScore, LabelType::setCopyMaxScore);
+ checkTranslation("copyMinScore", LabelType::isCopyMinScore, LabelType.Builder::setCopyMinScore);
+ checkTranslation("copyMaxScore", LabelType::isCopyMaxScore, LabelType.Builder::setCopyMaxScore);
checkTranslation(
"copyAllScoresIfNoChange",
LabelType::isCopyAllScoresIfNoChange,
- LabelType::setCopyAllScoresIfNoChange);
+ LabelType.Builder::setCopyAllScoresIfNoChange);
checkTranslation(
"copyAllScoresIfNoCodeChange",
LabelType::isCopyAllScoresIfNoCodeChange,
- LabelType::setCopyAllScoresIfNoCodeChange);
+ LabelType.Builder::setCopyAllScoresIfNoCodeChange);
checkTranslation(
"copyAllScoresOnMergeFirstParentUpdate",
LabelType::isCopyAllScoresOnMergeFirstParentUpdate,
- LabelType::setCopyAllScoresOnMergeFirstParentUpdate);
+ LabelType.Builder::setCopyAllScoresOnMergeFirstParentUpdate);
checkTranslation(
"copyAllScoresOnTrivialRebase",
LabelType::isCopyAllScoresOnTrivialRebase,
- LabelType::setCopyAllScoresOnTrivialRebase);
+ LabelType.Builder::setCopyAllScoresOnTrivialRebase);
}
@Test
@@ -63,7 +63,7 @@
ImmutableSet.of(
"copyAllScoresIfNoChange", "copyAllScoresOnMergeFirstParentUpdate"),
ImmutableSet.of("copyAllScoresIfNoChange"),
- LabelType.withDefaultValues("Verified")));
+ LabelType.withDefaultValues("Verified").toBuilder()));
assertThat(thrown)
.hasMessageThat()
.contains("copy score rules [copyAllScoresIfNoChange] are forbidden");
@@ -73,7 +73,7 @@
private static void checkTranslation(
String copyScoreName,
Predicate<LabelType> functionToCheck,
- BiConsumer<LabelType, Boolean> functionToSet)
+ BiConsumer<LabelType.Builder, Boolean> functionToSet)
throws Exception {
checkLabelToGerritPresent(copyScoreName, functionToCheck);
checkLabelToGerritAbsent(copyScoreName, functionToCheck);
@@ -83,13 +83,13 @@
}
private static void checkLabelFromGerritPresent(
- String copyScoreName, BiConsumer<LabelType, Boolean> functionToSet) {
+ String copyScoreName, BiConsumer<LabelType.Builder, Boolean> functionToSet) {
- LabelType label = LabelType.withDefaultValues("Verified");
+ LabelType.Builder label = LabelType.withDefaultValues("Verified").toBuilder();
LabelDefinition labelDefinition = new LabelDefinition();
functionToSet.accept(label, false);
- ConfigTranslator.extractLabelCopyScoreRules(label, labelDefinition);
+ ConfigTranslator.extractLabelCopyScoreRules(label.build(), labelDefinition);
assertWithMessage("[case %s:false]", copyScoreName)
.that(labelDefinition.copyScoreRules)
@@ -97,13 +97,13 @@
}
private static void checkLabelFromGerritAbsent(
- String copyScoreName, BiConsumer<LabelType, Boolean> functionToSet) {
+ String copyScoreName, BiConsumer<LabelType.Builder, Boolean> functionToSet) {
- LabelType label = LabelType.withDefaultValues("Verified");
+ LabelType.Builder label = LabelType.withDefaultValues("Verified").toBuilder();
LabelDefinition labelDefinition = new LabelDefinition();
functionToSet.accept(label, true);
- ConfigTranslator.extractLabelCopyScoreRules(label, labelDefinition);
+ ConfigTranslator.extractLabelCopyScoreRules(label.build(), labelDefinition);
assertWithMessage("[case %s:true]", copyScoreName)
.that(labelDefinition.copyScoreRules)
@@ -112,18 +112,21 @@
private static void checkLabelToGerritPresent(
String copyScoreName, Predicate<LabelType> functionToCheck) throws Exception {
- LabelType label = LabelType.withDefaultValues("Verified");
-
+ LabelType.Builder label = LabelType.withDefaultValues("Verified").toBuilder();
ConfigTranslator.applyCopyScoreRulesTo(
ImmutableSet.of(copyScoreName), ImmutableSet.of(), label);
- assertWithMessage("[case %s:true]", copyScoreName).that(functionToCheck.test(label)).isTrue();
+ assertWithMessage("[case %s:true]", copyScoreName)
+ .that(functionToCheck.test(label.build()))
+ .isTrue();
}
private static void checkLabelToGerritAbsent(
String copyScoreName, Predicate<LabelType> functionToCheck) throws Exception {
- LabelType label = LabelType.withDefaultValues("Verified");
+ LabelType.Builder label = LabelType.withDefaultValues("Verified").toBuilder();
ConfigTranslator.applyCopyScoreRulesTo(ImmutableSet.of(), ImmutableSet.of(), label);
- assertWithMessage("[case %s:false]", copyScoreName).that(functionToCheck.test(label)).isFalse();
+ assertWithMessage("[case %s:false]", copyScoreName)
+ .that(functionToCheck.test(label.build()))
+ .isFalse();
}
}