Convert IncludedInResolver.Result to AutoValue
Convert the tests to Truth as well. Change-Id: Iddbe7b8f5e29e8bc4ff3e0780477ec38434061c1
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
package com.google.gerrit.extensions.api.changes;
|
package com.google.gerrit.extensions.api.changes;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -23,9 +24,11 @@ public class IncludedInInfo {
|
|||||||
public Map<String, Collection<String>> external;
|
public Map<String, Collection<String>> external;
|
||||||
|
|
||||||
public IncludedInInfo(
|
public IncludedInInfo(
|
||||||
List<String> branches, List<String> tags, Map<String, Collection<String>> external) {
|
Collection<String> branches,
|
||||||
this.branches = branches;
|
Collection<String> tags,
|
||||||
this.tags = tags;
|
Map<String, Collection<String>> external) {
|
||||||
|
this.branches = new ArrayList<>(branches);
|
||||||
|
this.tags = new ArrayList<>(tags);
|
||||||
this.external = external;
|
this.external = external;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,13 +63,13 @@ public class IncludedIn {
|
|||||||
ListMultimap<String, String> external = MultimapBuilder.hashKeys().arrayListValues().build();
|
ListMultimap<String, String> external = MultimapBuilder.hashKeys().arrayListValues().build();
|
||||||
for (ExternalIncludedIn ext : externalIncludedIn) {
|
for (ExternalIncludedIn ext : externalIncludedIn) {
|
||||||
ListMultimap<String, String> extIncludedIns =
|
ListMultimap<String, String> extIncludedIns =
|
||||||
ext.getIncludedIn(project.get(), rev.name(), d.getTags(), d.getBranches());
|
ext.getIncludedIn(project.get(), rev.name(), d.tags(), d.branches());
|
||||||
if (extIncludedIns != null) {
|
if (extIncludedIns != null) {
|
||||||
external.putAll(extIncludedIns);
|
external.putAll(extIncludedIns);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new IncludedInInfo(
|
return new IncludedInInfo(
|
||||||
d.getBranches(), d.getTags(), (!external.isEmpty() ? external.asMap() : null));
|
d.branches(), d.tags(), (!external.isEmpty() ? external.asMap() : null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,13 @@
|
|||||||
|
|
||||||
package com.google.gerrit.server.change;
|
package com.google.gerrit.server.change;
|
||||||
|
|
||||||
|
import static com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet;
|
||||||
import static java.util.Comparator.comparing;
|
import static java.util.Comparator.comparing;
|
||||||
|
import static java.util.Comparator.naturalOrder;
|
||||||
import static java.util.stream.Collectors.toList;
|
import static java.util.stream.Collectors.toList;
|
||||||
|
|
||||||
|
import com.google.auto.value.AutoValue;
|
||||||
|
import com.google.common.collect.ImmutableSortedSet;
|
||||||
import com.google.common.collect.LinkedListMultimap;
|
import com.google.common.collect.LinkedListMultimap;
|
||||||
import com.google.common.collect.ListMultimap;
|
import com.google.common.collect.ListMultimap;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@@ -95,11 +99,9 @@ public class IncludedInResolver {
|
|||||||
parseCommits(allTagsAndBranches);
|
parseCommits(allTagsAndBranches);
|
||||||
Set<String> allMatchingTagsAndBranches = includedIn(tipsByCommitTime, 0);
|
Set<String> allMatchingTagsAndBranches = includedIn(tipsByCommitTime, 0);
|
||||||
|
|
||||||
Result detail = new Result();
|
return new AutoValue_IncludedInResolver_Result(
|
||||||
detail.setBranches(getMatchingRefNames(allMatchingTagsAndBranches, branches));
|
getMatchingRefNames(allMatchingTagsAndBranches, branches),
|
||||||
detail.setTags(getMatchingRefNames(allMatchingTagsAndBranches, tags));
|
getMatchingRefNames(allMatchingTagsAndBranches, tags));
|
||||||
|
|
||||||
return detail;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean includedInOne(Collection<Ref> refs) throws IOException {
|
private boolean includedInOne(Collection<Ref> refs) throws IOException {
|
||||||
@@ -169,15 +171,14 @@ public class IncludedInResolver {
|
|||||||
* Returns the short names of refs which are as well in the matchingRefs list as well as in the
|
* Returns the short names of refs which are as well in the matchingRefs list as well as in the
|
||||||
* allRef list.
|
* allRef list.
|
||||||
*/
|
*/
|
||||||
private static List<String> getMatchingRefNames(
|
private static ImmutableSortedSet<String> getMatchingRefNames(
|
||||||
Set<String> matchingRefs, Collection<Ref> allRefs) {
|
Set<String> matchingRefs, Collection<Ref> allRefs) {
|
||||||
List<String> refNames = Lists.newArrayListWithCapacity(matchingRefs.size());
|
return allRefs
|
||||||
for (Ref r : allRefs) {
|
.stream()
|
||||||
if (matchingRefs.contains(r.getName())) {
|
.map(Ref::getName)
|
||||||
refNames.add(Repository.shortenRefName(r.getName()));
|
.filter(matchingRefs::contains)
|
||||||
}
|
.map(Repository::shortenRefName)
|
||||||
}
|
.collect(toImmutableSortedSet(naturalOrder()));
|
||||||
return refNames;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Parse commit of ref and store the relation between ref and commit. */
|
/** Parse commit of ref and store the relation between ref and commit. */
|
||||||
@@ -209,28 +210,10 @@ public class IncludedInResolver {
|
|||||||
commitToRef.keySet().stream().sorted(comparing(RevCommit::getCommitTime)).collect(toList());
|
commitToRef.keySet().stream().sorted(comparing(RevCommit::getCommitTime)).collect(toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Result {
|
@AutoValue
|
||||||
private List<String> branches;
|
public abstract static class Result {
|
||||||
private List<String> tags;
|
public abstract ImmutableSortedSet<String> branches();
|
||||||
|
|
||||||
public Result() {}
|
public abstract ImmutableSortedSet<String> tags();
|
||||||
|
|
||||||
public void setBranches(List<String> b) {
|
|
||||||
Collections.sort(b);
|
|
||||||
branches = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getBranches() {
|
|
||||||
return branches;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTags(List<String> t) {
|
|
||||||
Collections.sort(t);
|
|
||||||
tags = t;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getTags() {
|
|
||||||
return tags;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,10 +14,9 @@
|
|||||||
|
|
||||||
package com.google.gerrit.server.change;
|
package com.google.gerrit.server.change;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import org.eclipse.jgit.api.Git;
|
import org.eclipse.jgit.api.Git;
|
||||||
import org.eclipse.jgit.api.MergeCommand.FastForwardMode;
|
import org.eclipse.jgit.api.MergeCommand.FastForwardMode;
|
||||||
import org.eclipse.jgit.junit.RepositoryTestCase;
|
import org.eclipse.jgit.junit.RepositoryTestCase;
|
||||||
@@ -27,7 +26,6 @@ import org.eclipse.jgit.revwalk.RevCommit;
|
|||||||
import org.eclipse.jgit.revwalk.RevTag;
|
import org.eclipse.jgit.revwalk.RevTag;
|
||||||
import org.eclipse.jgit.revwalk.RevWalk;
|
import org.eclipse.jgit.revwalk.RevWalk;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@@ -55,9 +53,6 @@ public class IncludedInResolverTest extends RepositoryTestCase {
|
|||||||
private RevCommit commit_v1_3;
|
private RevCommit commit_v1_3;
|
||||||
private RevCommit commit_v2_5;
|
private RevCommit commit_v2_5;
|
||||||
|
|
||||||
private List<String> expTags = new ArrayList<>();
|
|
||||||
private List<String> expBranches = new ArrayList<>();
|
|
||||||
|
|
||||||
private RevWalk revWalk;
|
private RevWalk revWalk;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -140,12 +135,8 @@ public class IncludedInResolverTest extends RepositoryTestCase {
|
|||||||
IncludedInResolver.Result detail = resolve(commit_v2_5);
|
IncludedInResolver.Result detail = resolve(commit_v2_5);
|
||||||
|
|
||||||
// Check that only tags and branches which refer the tip are returned
|
// Check that only tags and branches which refer the tip are returned
|
||||||
expTags.add(TAG_2_5);
|
assertThat(detail.tags()).containsExactly(TAG_2_5, TAG_2_5_ANNOTATED, TAG_2_5_ANNOTATED_TWICE);
|
||||||
expTags.add(TAG_2_5_ANNOTATED);
|
assertThat(detail.branches()).containsExactly(BRANCH_2_5);
|
||||||
expTags.add(TAG_2_5_ANNOTATED_TWICE);
|
|
||||||
assertEquals(expTags, detail.getTags());
|
|
||||||
expBranches.add(BRANCH_2_5);
|
|
||||||
assertEquals(expBranches, detail.getBranches());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -154,22 +145,18 @@ public class IncludedInResolverTest extends RepositoryTestCase {
|
|||||||
IncludedInResolver.Result detail = resolve(commit_initial);
|
IncludedInResolver.Result detail = resolve(commit_initial);
|
||||||
|
|
||||||
// Check whether all tags and branches are returned
|
// Check whether all tags and branches are returned
|
||||||
expTags.add(TAG_1_0);
|
assertThat(detail.tags())
|
||||||
expTags.add(TAG_1_0_1);
|
.containsExactly(
|
||||||
expTags.add(TAG_1_3);
|
TAG_1_0,
|
||||||
expTags.add(TAG_2_0);
|
TAG_1_0_1,
|
||||||
expTags.add(TAG_2_0_1);
|
TAG_1_3,
|
||||||
expTags.add(TAG_2_5);
|
TAG_2_0,
|
||||||
expTags.add(TAG_2_5_ANNOTATED);
|
TAG_2_0_1,
|
||||||
expTags.add(TAG_2_5_ANNOTATED_TWICE);
|
TAG_2_5,
|
||||||
assertEquals(expTags, detail.getTags());
|
TAG_2_5_ANNOTATED,
|
||||||
|
TAG_2_5_ANNOTATED_TWICE);
|
||||||
expBranches.add(BRANCH_MASTER);
|
assertThat(detail.branches())
|
||||||
expBranches.add(BRANCH_1_0);
|
.containsExactly(BRANCH_MASTER, BRANCH_1_0, BRANCH_1_3, BRANCH_2_0, BRANCH_2_5);
|
||||||
expBranches.add(BRANCH_1_3);
|
|
||||||
expBranches.add(BRANCH_2_0);
|
|
||||||
expBranches.add(BRANCH_2_5);
|
|
||||||
assertEquals(expBranches, detail.getBranches());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -178,27 +165,15 @@ public class IncludedInResolverTest extends RepositoryTestCase {
|
|||||||
IncludedInResolver.Result detail = resolve(commit_v1_3);
|
IncludedInResolver.Result detail = resolve(commit_v1_3);
|
||||||
|
|
||||||
// Check whether all succeeding tags and branches are returned
|
// Check whether all succeeding tags and branches are returned
|
||||||
expTags.add(TAG_1_3);
|
assertThat(detail.tags())
|
||||||
expTags.add(TAG_2_5);
|
.containsExactly(TAG_1_3, TAG_2_5, TAG_2_5_ANNOTATED, TAG_2_5_ANNOTATED_TWICE);
|
||||||
expTags.add(TAG_2_5_ANNOTATED);
|
assertThat(detail.branches()).containsExactly(BRANCH_1_3, BRANCH_2_5);
|
||||||
expTags.add(TAG_2_5_ANNOTATED_TWICE);
|
|
||||||
assertEquals(expTags, detail.getTags());
|
|
||||||
|
|
||||||
expBranches.add(BRANCH_1_3);
|
|
||||||
expBranches.add(BRANCH_2_5);
|
|
||||||
assertEquals(expBranches, detail.getBranches());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IncludedInResolver.Result resolve(RevCommit commit) throws Exception {
|
private IncludedInResolver.Result resolve(RevCommit commit) throws Exception {
|
||||||
return IncludedInResolver.resolve(db, revWalk, commit);
|
return IncludedInResolver.resolve(db, revWalk, commit);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertEquals(List<String> list1, List<String> list2) {
|
|
||||||
Collections.sort(list1);
|
|
||||||
Collections.sort(list2);
|
|
||||||
Assert.assertEquals(list1, list2);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createAndCheckoutBranch(ObjectId objectId, String branchName) throws IOException {
|
private void createAndCheckoutBranch(ObjectId objectId, String branchName) throws IOException {
|
||||||
String fullBranchName = "refs/heads/" + branchName;
|
String fullBranchName = "refs/heads/" + branchName;
|
||||||
super.createBranch(objectId, fullBranchName);
|
super.createBranch(objectId, fullBranchName);
|
||||||
|
|||||||
Reference in New Issue
Block a user