Merge branch 'stable-3.10' into stable-3.11 * stable-3.10: API should take into account the configured approval label Fix GJF 1.7 formatting on java files Change-Id: Iaa0d99b8530e488f05f5973bbf001e390d889878
diff --git a/owners/src/main/java/com/googlesource/gerrit/owners/restapi/GetFilesOwners.java b/owners/src/main/java/com/googlesource/gerrit/owners/restapi/GetFilesOwners.java index 005e83f..1327fcb 100644 --- a/owners/src/main/java/com/googlesource/gerrit/owners/restapi/GetFilesOwners.java +++ b/owners/src/main/java/com/googlesource/gerrit/owners/restapi/GetFilesOwners.java
@@ -146,13 +146,14 @@ fileExpandedOwners.get(fileOwnerEntry.getKey()), ownersLabels, label)); Map<String, Set<GroupOwner>> filesApprovedByOwners = - Maps.filterEntries( - fileToOwners, - (fileOwnerEntry) -> - isApprovedByOwner( - fileExpandedOwners.get(fileOwnerEntry.getKey()), ownersLabels, label)); + Maps.filterEntries( + fileToOwners, + (fileOwnerEntry) -> + isApprovedByOwner( + fileExpandedOwners.get(fileOwnerEntry.getKey()), ownersLabels, label)); - return Response.ok(new FilesOwnersResponse(ownersLabels, filesWithPendingOwners, filesApprovedByOwners)); + return Response.ok( + new FilesOwnersResponse(ownersLabels, filesWithPendingOwners, filesApprovedByOwners)); } catch (InvalidOwnersFileException e) { logger.atSevere().withCause(e).log("Reading/parsing OWNERS file error."); throw new ResourceConflictException(e.getMessage(), e); @@ -163,9 +164,7 @@ throws ResourceNotFoundException { try { - return Optional.of(pluginSettings.enableSubmitRequirement()) - .filter(Boolean::booleanValue) - .flatMap(enabled -> getLabelFromOwners(owners, changeData)) + return getLabelFromOwners(owners, changeData) .orElseGet( () -> new LabelAndScore(
diff --git a/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersITAbstract.java b/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersITAbstract.java index 4593e33..7682434 100644 --- a/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersITAbstract.java +++ b/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersITAbstract.java
@@ -37,6 +37,7 @@ import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.server.project.testing.TestLabels; import com.googlesource.gerrit.owners.common.InvalidOwnersFileException; +import com.googlesource.gerrit.owners.common.LabelDefinition; import com.googlesource.gerrit.owners.entities.FilesOwnersResponse; import com.googlesource.gerrit.owners.entities.GroupOwner; import com.googlesource.gerrit.owners.entities.Owner; @@ -186,6 +187,20 @@ } @Test + public void shouldNotApproveOwnedFilesWhenCustomLabelInOwnersFileNotProvided() throws Exception { + addOwnerFileToRootWithLabel(LabelDefinition.parse("Foo,1").get(), admin); + String changeId = createChange().getChangeId(); + approve(changeId); + + Response<FilesOwnersResponse> resp = + assertResponseOk(ownersApi.apply(parseCurrentRevisionResource(changeId))); + + assertThat(resp.value().files) + .containsExactly("a.txt", Sets.newHashSet(new Owner(admin.fullName(), admin.id().get()))); + assertThat(resp.value().filesApproved).isEmpty(); + } + + @Test @UseLocalDisk public void shouldReturnInheritedOwnersFromProjectsOwners() throws Exception { assertInheritFromProject(project); @@ -342,6 +357,28 @@ "")); } + protected void addOwnerFileToRootWithLabel(LabelDefinition label, TestAccount u) + throws Exception { + // Add OWNERS file to root: + // + // inherited: true + // label: label,score # score is optional + // owners: + // - u.email() + String owners = + String.format( + "inherited: true\nlabel: %s\nowners:\n- %s\n", + String.format( + "%s%s", + label.getName(), + label.getScore().map(value -> String.format(",%d", value)).orElse("")), + u.email()); + pushFactory + .create(admin.newIdent(), testRepo, "Add OWNER file", "OWNERS", owners) + .to(RefNames.fullName("master")) + .assertOkStatus(); + } + private void addOwnerFileWithMatchersToRoot(boolean inherit) throws Exception { addOwnerFileWithMatchers(testRepo, "master", inherit); }
diff --git a/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersSubmitRequirementsIT.java b/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersSubmitRequirementsIT.java index d45deb5..c316757 100644 --- a/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersSubmitRequirementsIT.java +++ b/owners/src/test/java/com/googlesource/gerrit/owners/restapi/GetFilesOwnersSubmitRequirementsIT.java
@@ -65,7 +65,7 @@ @Test public void shouldRequireConfiguredCodeReviewScore() throws Exception { // configure submit requirement to require CR+1 only - addOwnerFileToRoot(LabelDefinition.parse("Code-Review,1").get(), admin); + addOwnerFileToRootWithLabel(LabelDefinition.parse("Code-Review,1").get(), admin); String changeId = createChange("Add a file", "foo", "bar").getChangeId(); @@ -91,7 +91,7 @@ public void shouldRequireConfiguredLabelAndScore() throws Exception { // configure submit requirement to require LabelFoo+1 String label = "LabelFoo"; - addOwnerFileToRoot(LabelDefinition.parse(String.format("%s,1", label)).get(), admin); + addOwnerFileToRootWithLabel(LabelDefinition.parse(String.format("%s,1", label)).get(), admin); replaceCodeReviewWithLabel(label); String changeId = createChange("Add a file", "foo", "bar").getChangeId(); @@ -113,27 +113,6 @@ .containsExactly("foo", Sets.newHashSet(new Owner(admin.fullName(), admin.id().get()))); } - private void addOwnerFileToRoot(LabelDefinition label, TestAccount u) throws Exception { - // Add OWNERS file to root: - // - // inherited: true - // label: label,score # score is optional - // owners: - // - u.email() - String owners = - String.format( - "inherited: true\nlabel: %s\nowners:\n- %s\n", - String.format( - "%s%s", - label.getName(), - label.getScore().map(value -> String.format(",%d", value)).orElse("")), - u.email()); - pushFactory - .create(admin.newIdent(), testRepo, "Add OWNER file", "OWNERS", owners) - .to(RefNames.fullName("master")) - .assertOkStatus(); - } - private void replaceCodeReviewWithLabel(String labelId) throws Exception { LabelType label = TestLabels.label(labelId, TestLabels.value(1, "OK"), TestLabels.value(-1, "Not OK"));