Merge "Add unit tests to verify label scores policies configuration"
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java
index 6cc593e..0757a26 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java
@@ -49,6 +49,18 @@
 import java.util.Map;
 
 public class ProjectConfigTest extends LocalDiskRepositoryTestCase {
+  private static final String LABEL_SCORES_CONFIG =
+      "  copyMinScore = " + !LabelType.DEF_COPY_MIN_SCORE + "\n" //
+      + "  copyMaxScore = " + !LabelType.DEF_COPY_MAX_SCORE + "\n" //
+      + "  copyAllScoresOnMergeFirstParentUpdate = "
+      + !LabelType.DEF_COPY_ALL_SCORES_ON_MERGE_FIRST_PARENT_UPDATE + "\n" //
+      + "  copyAllScoresOnTrivialRebase = "
+      + !LabelType.DEF_COPY_ALL_SCORES_ON_TRIVIAL_REBASE + "\n" //
+      + "  copyAllScoresIfNoCodeChange = "
+      + !LabelType.DEF_COPY_ALL_SCORES_IF_NO_CODE_CHANGE + "\n" //
+      + "  copyAllScoresIfNoChange = "
+      + !LabelType.DEF_COPY_ALL_SCORES_IF_NO_CHANGE + "\n";
+
   private final GroupReference developers = new GroupReference(
       new AccountGroup.UUID("X"), "Developers");
   private final GroupReference staff = new GroupReference(
@@ -167,6 +179,30 @@
   }
 
   @Test
+  public void testReadConfigLabelScores() throws Exception {
+    RevCommit rev = util.commit(util.tree( //
+        util.file("groups", util.blob(group(developers))), //
+        util.file("project.config", util.blob(""//
+            + "[label \"CustomLabel\"]\n" //
+            + LABEL_SCORES_CONFIG)) //
+        ));
+
+    ProjectConfig cfg = read(rev);
+    Map<String, LabelType> labels = cfg.getLabelSections();
+    LabelType type = labels.entrySet().iterator().next().getValue();
+    assertThat(type.isCopyMinScore()).isNotEqualTo(LabelType.DEF_COPY_MIN_SCORE);
+    assertThat(type.isCopyMaxScore()).isNotEqualTo(LabelType.DEF_COPY_MAX_SCORE);
+    assertThat(type.isCopyAllScoresOnMergeFirstParentUpdate())
+      .isNotEqualTo(LabelType.DEF_COPY_ALL_SCORES_ON_MERGE_FIRST_PARENT_UPDATE);
+    assertThat(type.isCopyAllScoresOnTrivialRebase())
+      .isNotEqualTo(LabelType.DEF_COPY_ALL_SCORES_ON_TRIVIAL_REBASE);
+    assertThat(type.isCopyAllScoresIfNoCodeChange())
+      .isNotEqualTo(LabelType.DEF_COPY_ALL_SCORES_IF_NO_CODE_CHANGE);
+    assertThat(type.isCopyAllScoresIfNoChange())
+      .isNotEqualTo(LabelType.DEF_COPY_ALL_SCORES_IF_NO_CHANGE);
+  }
+
+  @Test
   public void testEditConfig() throws Exception {
     RevCommit rev = util.commit(util.tree( //
         util.file("groups", util.blob(group(developers))), //
@@ -183,7 +219,9 @@
             + "  description = A simple description\n" //
             + "  accepted = group Developers\n" //
             + "  autoVerify = group Developers\n" //
-            + "  agreementUrl = http://www.example.com/agree\n")) //
+            + "  agreementUrl = http://www.example.com/agree\n" //
+            + "[label \"CustomLabel\"]\n" //
+            + LABEL_SCORES_CONFIG)) //
         ));
     update(rev);
 
@@ -210,7 +248,11 @@
         + "[contributor-agreement \"Individual\"]\n" //
         + "  description = A new description\n" //
         + "  accepted = group Staff\n" //
-        + "  agreementUrl = http://www.example.com/agree\n");
+        + "  agreementUrl = http://www.example.com/agree\n"
+        + "[label \"CustomLabel\"]\n" //
+        + LABEL_SCORES_CONFIG
+        + "\tfunction = MaxWithBlock\n" // label gets this function when it is created
+        + "\tdefaultValue = 0\n"); //  label gets this value when it is created
   }
 
   @Test