View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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          // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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         // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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 }