Merge branch 'stable-3.11'
* stable-3.11:
API should take into account the configured approval label
Fix GJF 1.7 formatting on java files
Change-Id: I625d6279a2e1955da186e77badc3688645a489a4
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"));