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.jupiter.api.BeforeEach;
37 import org.junit.jupiter.api.Test;
38 import org.junit.jupiter.api.extension.ExtendWith;
39 import org.mockito.junit.jupiter.MockitoExtension;
40 import org.mockito.junit.jupiter.MockitoSettings;
41 import org.mockito.quality.Strictness;
42
43 import static org.mockito.ArgumentMatchers.anyList;
44 import static org.mockito.ArgumentMatchers.eq;
45 import static org.mockito.ArgumentMatchers.isNull;
46 import static org.mockito.Mockito.mock;
47 import static org.mockito.Mockito.verify;
48 import static org.mockito.Mockito.when;
49
50 @MockitoSettings(strictness = Strictness.WARN)
51 @ExtendWith(MockitoExtension.class)
52 public class DependencySetAssemblyPhaseTest {
53 private DependencySetAssemblyPhase phase;
54
55 private DependencyResolver dependencyResolver;
56
57 @BeforeEach
58 public void setUp() {
59 this.dependencyResolver = mock(DependencyResolver.class);
60
61 this.phase = new DependencySetAssemblyPhase(mock(ProjectBuilder.class), dependencyResolver);
62 }
63
64 @Test
65 public void testExecuteShouldAddOneDependencyFromProject()
66 throws AssemblyFormattingException, ArchiveCreationException, IOException,
67 InvalidAssemblerConfigurationException, DependencyResolutionException {
68 final String outputLocation = "/out";
69
70 final MavenProject project = newMavenProject("group", "project", "0");
71
72 Artifact artifact = mock(Artifact.class);
73 project.setArtifact(artifact);
74
75 final DependencySet ds = new DependencySet();
76 ds.setUseProjectArtifact(false);
77 ds.setOutputDirectory(outputLocation);
78 ds.setOutputFileNameMapping("${artifact.artifactId}");
79 ds.setUnpack(false);
80 ds.setScope(Artifact.SCOPE_COMPILE);
81 ds.setFileMode(Integer.toString(10, 8));
82
83 final Assembly assembly = new Assembly();
84
85 assembly.setId("test");
86 assembly.setIncludeBaseDirectory(false);
87 assembly.addDependencySet(ds);
88
89 project.setArtifacts(Collections.singleton(artifact));
90
91 when(dependencyResolver.resolveDependencySets(eq(assembly), isNull(), anyList()))
92 .thenReturn(new LinkedHashMap<>());
93
94 this.phase.execute(assembly, null, null);
95
96
97 verify(dependencyResolver).resolveDependencySets(eq(assembly), isNull(), anyList());
98 }
99
100 @Test
101 public void testExecuteShouldNotAddDependenciesWhenProjectHasNone() throws Exception {
102 final Assembly assembly = new Assembly();
103 assembly.setId("test");
104 assembly.setIncludeBaseDirectory(false);
105
106 when(dependencyResolver.resolveDependencySets(eq(assembly), isNull(), anyList()))
107 .thenReturn(new LinkedHashMap<>());
108
109 this.phase.execute(assembly, null, null);
110
111
112 verify(dependencyResolver).resolveDependencySets(eq(assembly), isNull(), anyList());
113 }
114
115 private MavenProject newMavenProject(final String groupId, final String artifactId, final String version) {
116 final Model model = new Model();
117 model.setGroupId(groupId);
118 model.setArtifactId(artifactId);
119 model.setVersion(version);
120
121 return new MavenProject(model);
122 }
123 }