1 package org.apache.maven.plugin.assembly.archive.phase;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.artifact.Artifact;
23 import org.apache.maven.model.Model;
24 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
25 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
26 import org.apache.maven.plugin.assembly.archive.task.testutils.ArtifactMock;
27 import org.apache.maven.plugin.assembly.archive.task.testutils.MockAndControlForAddDependencySetsTask;
28 import org.apache.maven.plugin.assembly.artifact.DependencyResolutionException;
29 import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
30 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
31 import org.apache.maven.plugin.assembly.model.Assembly;
32 import org.apache.maven.plugin.assembly.model.DependencySet;
33 import org.apache.maven.project.MavenProject;
34 import org.apache.maven.project.MavenProjectBuilder;
35 import org.codehaus.plexus.logging.Logger;
36 import org.codehaus.plexus.logging.console.ConsoleLogger;
37
38 import java.io.File;
39 import java.io.IOException;
40 import java.util.Collections;
41
42 import junit.framework.TestCase;
43 import org.easymock.classextension.EasyMockSupport;
44
45 public class DependencySetAssemblyPhaseTest
46 extends TestCase
47 {
48
49 final EasyMockSupport mm = new EasyMockSupport();
50
51 public void testExecute_ShouldAddOneDependencyFromProject()
52 throws AssemblyFormattingException, ArchiveCreationException, IOException,
53 InvalidAssemblerConfigurationException, DependencyResolutionException
54 {
55 final String outputLocation = "/out";
56
57 final MavenProject project = newMavenProject( "group", "project", "0" );
58
59 final ArtifactMock projectArtifactMock = new ArtifactMock( mm, "group", "project", "0", "jar", false );
60
61 project.setArtifact( projectArtifactMock.getArtifact() );
62
63 final DependencySet ds = new DependencySet();
64 ds.setUseProjectArtifact( false );
65 ds.setOutputDirectory( outputLocation );
66 ds.setOutputFileNameMapping( "${artifact.artifactId}" );
67 ds.setUnpack( false );
68 ds.setScope( Artifact.SCOPE_COMPILE );
69 ds.setFileMode( Integer.toString( 10, 8 ) );
70
71 final Assembly assembly = new Assembly();
72
73 assembly.setId( "test" );
74 assembly.setIncludeBaseDirectory( false );
75 assembly.addDependencySet( ds );
76
77 final MockAndControlForAddDependencySetsTask macTask =
78 new MockAndControlForAddDependencySetsTask( mm, project );
79
80 final ArtifactMock artifactMock = new ArtifactMock( mm, "group", "dep", "1", "jar", false );
81
82 System.out.println( "On test setup, hashcode for dependency artifact: " + artifactMock.getArtifact()
83 .hashCode() );
84
85 macTask.expectCSGetRepositories( null, null );
86
87 macTask.expectGetDestFile( new File( "junk" ) );
88
89
90 macTask.expectGetSession( null );
91
92 project.setArtifacts( Collections.singleton( artifactMock.getArtifact() ) );
93
94 macTask.expectCSGetFinalName( "final-name" );
95
96 final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
97
98 final MavenProject depProject = newMavenProject( "group", "dep", "1" );
99
100 macTask.expectBuildFromRepository( depProject );
101
102 macTask.expectResolveDependencySets();
103
104 mm.replayAll();
105
106 createPhase( macTask, logger, macTask.dependencyResolver ).execute( assembly, macTask.archiver, macTask.configSource );
107
108 mm.verifyAll();
109 }
110
111 private MavenProject newMavenProject( final String groupId, final String artifactId, final String version )
112 {
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
121 public void testExecute_ShouldNotAddDependenciesWhenProjectHasNone()
122 throws AssemblyFormattingException, ArchiveCreationException, IOException,
123 InvalidAssemblerConfigurationException, DependencyResolutionException
124 {
125 final Assembly assembly = new Assembly();
126
127 assembly.setId( "test" );
128 assembly.setIncludeBaseDirectory( false );
129
130 final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
131
132 final MockAndControlForAddDependencySetsTask macTask =
133 new MockAndControlForAddDependencySetsTask( mm, null );
134
135 macTask.expectResolveDependencySets();
136
137 mm.replayAll();
138
139 createPhase( macTask, logger, macTask.dependencyResolver ).execute( assembly, null, macTask.configSource );
140
141 mm.verifyAll();
142 }
143
144 private DependencySetAssemblyPhase createPhase( final MockAndControlForAddDependencySetsTask macTask,
145 final Logger logger, DependencyResolver dr )
146 {
147 MavenProjectBuilder projectBuilder = null;
148
149 if ( macTask != null )
150 {
151 projectBuilder = macTask.projectBuilder;
152 }
153
154 final DependencySetAssemblyPhase phase = new DependencySetAssemblyPhase( projectBuilder, dr, logger );
155
156 phase.enableLogging( logger );
157
158 return phase;
159 }
160
161 }