1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.assembly.archive.phase;
20
21 import java.io.IOException;
22 import java.util.Collections;
23 import java.util.LinkedHashMap;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.model.Model;
27 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
28 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
29 import org.apache.maven.plugins.assembly.artifact.DependencyResolutionException;
30 import org.apache.maven.plugins.assembly.artifact.DependencyResolver;
31 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
32 import org.apache.maven.plugins.assembly.model.Assembly;
33 import org.apache.maven.plugins.assembly.model.DependencySet;
34 import org.apache.maven.project.MavenProject;
35 import org.apache.maven.project.ProjectBuilder;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.junit.runner.RunWith;
39 import org.mockito.junit.MockitoJUnitRunner;
40
41 import static org.mockito.ArgumentMatchers.anyList;
42 import static org.mockito.ArgumentMatchers.eq;
43 import static org.mockito.ArgumentMatchers.isNull;
44 import static org.mockito.Mockito.mock;
45 import static org.mockito.Mockito.verify;
46 import static org.mockito.Mockito.when;
47
48 @RunWith(MockitoJUnitRunner.class)
49 public class DependencySetAssemblyPhaseTest {
50 private DependencySetAssemblyPhase phase;
51
52 private DependencyResolver dependencyResolver;
53
54 @Before
55 public void setUp() {
56 this.dependencyResolver = mock(DependencyResolver.class);
57
58 this.phase = new DependencySetAssemblyPhase(mock(ProjectBuilder.class), dependencyResolver);
59 }
60
61 @Test
62 public void testExecute_ShouldAddOneDependencyFromProject()
63 throws AssemblyFormattingException, ArchiveCreationException, IOException,
64 InvalidAssemblerConfigurationException, DependencyResolutionException {
65 final String outputLocation = "/out";
66
67 final MavenProject project = newMavenProject("group", "project", "0");
68
69 Artifact artifact = mock(Artifact.class);
70 project.setArtifact(artifact);
71
72 final DependencySet ds = new DependencySet();
73 ds.setUseProjectArtifact(false);
74 ds.setOutputDirectory(outputLocation);
75 ds.setOutputFileNameMapping("${artifact.artifactId}");
76 ds.setUnpack(false);
77 ds.setScope(Artifact.SCOPE_COMPILE);
78 ds.setFileMode(Integer.toString(10, 8));
79
80 final Assembly assembly = new Assembly();
81
82 assembly.setId("test");
83 assembly.setIncludeBaseDirectory(false);
84 assembly.addDependencySet(ds);
85
86 project.setArtifacts(Collections.singleton(artifact));
87
88 when(dependencyResolver.resolveDependencySets(eq(assembly), isNull(), anyList()))
89 .thenReturn(new LinkedHashMap<>());
90
91 this.phase.execute(assembly, null, null);
92
93
94 verify(dependencyResolver).resolveDependencySets(eq(assembly), isNull(), anyList());
95 }
96
97 @Test
98 public void testExecute_ShouldNotAddDependenciesWhenProjectHasNone() throws Exception {
99 final Assembly assembly = new Assembly();
100 assembly.setId("test");
101 assembly.setIncludeBaseDirectory(false);
102
103 when(dependencyResolver.resolveDependencySets(eq(assembly), isNull(), anyList()))
104 .thenReturn(new LinkedHashMap<>());
105
106 this.phase.execute(assembly, null, null);
107
108
109 verify(dependencyResolver).resolveDependencySets(eq(assembly), isNull(), anyList());
110 }
111
112 private MavenProject newMavenProject(final String groupId, final String artifactId, final String version) {
113 final Model model = new Model();
114 model.setGroupId(groupId);
115 model.setArtifactId(artifactId);
116 model.setVersion(version);
117
118 return new MavenProject(model);
119 }
120 }