Skip to content

Commit

Permalink
Using Maven dependency mediation (#296)
Browse files Browse the repository at this point in the history
* Make transitive dependency versions for multiple dependencies.

* Enhance test as requested by reviewer.

* Simplified MavenProvisioner as requested by reviewer.
  • Loading branch information
fvgh authored Sep 11, 2018
1 parent 9b2f3e3 commit 4257fee
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@
*/
package com.diffplug.spotless.maven;

import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toSet;

import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.Set;
Expand Down Expand Up @@ -53,10 +56,18 @@ public ArtifactResolver(RepositorySystem repositorySystem, RepositorySystemSessi
this.log = Objects.requireNonNull(log);
}

/** Use {@link ArtifactResolver#resolve(Collection) instead.} */
@Deprecated
public Set<File> resolve(String mavenCoordinate) {
Artifact artifact = new DefaultArtifact(mavenCoordinate);
Dependency dependency = new Dependency(artifact, null);
CollectRequest collectRequest = new CollectRequest(dependency, repositories);
return resolve(Arrays.asList(mavenCoordinate));
}

public Set<File> resolve(Collection<String> mavenCoordinate) {
List<Dependency> dependencies = mavenCoordinate.stream()
.map(coordinateString -> new DefaultArtifact(coordinateString))
.map(artifact -> new Dependency(artifact, null))
.collect(toList());
CollectRequest collectRequest = new CollectRequest((Dependency) null, dependencies, repositories);
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, ACCEPT_ALL_FILTER);

DependencyResult dependencyResult = resolveDependencies(dependencyRequest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,14 @@
*/
package com.diffplug.spotless.maven;

import static java.util.stream.Collectors.toSet;

import java.util.Objects;

import com.diffplug.spotless.Provisioner;

/** Maven integration for Provisioner. */
public class MavenProvisioner {
private MavenProvisioner() {}

public static Provisioner create(ArtifactResolver artifactResolver) {
Objects.requireNonNull(artifactResolver);

return mavenCoords -> mavenCoords.stream()
.flatMap(coord -> artifactResolver.resolve(coord).stream())
.collect(toSet());
return artifactResolver::resolve;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,56 +15,34 @@
*/
package com.diffplug.spotless.maven;

import static com.diffplug.common.collect.Sets.newHashSet;
import static java.util.Collections.emptySet;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.io.File;
import java.util.Set;

import org.junit.Test;

import com.diffplug.spotless.Provisioner;

public class MavenProvisionerTest {
public class MavenProvisionerTest extends MavenIntegrationTest {

@Test
public void testProvisionWithDependenciesWhenNothingResolved() throws Exception {
ArtifactResolver resolver = mock(ArtifactResolver.class);
when(resolver.resolve(anyString())).thenReturn(emptySet());
Provisioner provisioner = MavenProvisioner.create(resolver);

Set<File> files = provisioner.provisionWithDependencies("foo", "bar", "baz");

assertThat(files).isEmpty();
public void testMultipleDependencies() throws Exception {
writePomWithJavaSteps(
"<eclipse>",
" <version>4.8.0</version>",
"</eclipse>");
setFile("formatter.xml").toResource("java/eclipse/formatter.xml");
assertResolveDependenciesWorks();
}

@Test
public void testProvisionWithDependencies() throws Exception {
ArtifactResolver resolver = mock(ArtifactResolver.class);
when(resolver.resolve("foo")).thenReturn(newHashSet(new File("foo-1"), new File("foo-2")));
when(resolver.resolve("bar")).thenReturn(newHashSet(new File("bar-1")));
when(resolver.resolve("baz")).thenReturn(newHashSet(new File("baz-1"), new File("baz-2")));
Provisioner provisioner = MavenProvisioner.create(resolver);

Set<File> files = provisioner.provisionWithDependencies("foo", "bar", "baz");

assertThat(files).containsOnly(new File("foo-1"), new File("foo-2"), new File("bar-1"), new File("baz-1"), new File("baz-2"));
public void testSingleDependency() throws Exception {
writePomWithJavaSteps(
"<googleJavaFormat>",
" <version>1.2</version>",
"</googleJavaFormat>");
assertResolveDependenciesWorks();
}

@Test
public void testProvisionWithDependenciesWithDuplicates() throws Exception {
ArtifactResolver resolver = mock(ArtifactResolver.class);
when(resolver.resolve("foo")).thenReturn(newHashSet(new File("foo-1"), new File("foo-2")));
when(resolver.resolve("bar")).thenReturn(newHashSet(new File("foo-2")));
when(resolver.resolve("baz")).thenReturn(newHashSet(new File("foo-1"), new File("baz-2")));
Provisioner provisioner = MavenProvisioner.create(resolver);

Set<File> files = provisioner.provisionWithDependencies("foo", "bar", "baz");

assertThat(files).containsOnly(new File("foo-1"), new File("foo-2"), new File("baz-2"));
private void assertResolveDependenciesWorks() throws Exception {
String path = "src/main/java/test.java";
String unformattedContent = "package a;";
setFile(path).toContent(unformattedContent);
mavenRunner().withArguments("spotless:apply").runNoError();
assertFile(path).hasContent(unformattedContent.replace(" ", " "));
}
}

0 comments on commit 4257fee

Please sign in to comment.