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.DefaultAssemblyContext;
25 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
26 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
27 import org.apache.maven.plugin.assembly.archive.task.testutils.ArtifactMock;
28 import org.apache.maven.plugin.assembly.archive.task.testutils.MockAndControlForAddDependencySetsTask;
29 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
30 import org.apache.maven.plugin.assembly.model.Assembly;
31 import org.apache.maven.plugin.assembly.model.DependencySet;
32 import org.apache.maven.plugin.assembly.testutils.MockManager;
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
44 public class DependencySetAssemblyPhaseTest
45 extends TestCase
46 {
47
48 private final MockManager mockManager = new MockManager();
49
50 public void testExecute_ShouldAddOneDependencyFromProject()
51 throws AssemblyFormattingException, ArchiveCreationException, IOException,
52 InvalidAssemblerConfigurationException
53 {
54 final String outputLocation = "/out";
55
56 final MavenProject project = newMavenProject( "group", "project", "0" );
57
58 final ArtifactMock projectArtifactMock = new ArtifactMock( mockManager, "group", "project", "0", "jar", false );
59
60 project.setArtifact( projectArtifactMock.getArtifact() );
61
62 final DependencySet ds = new DependencySet();
63 ds.setUseProjectArtifact( false );
64 ds.setOutputDirectory( outputLocation );
65 ds.setOutputFileNameMapping( "${artifact.artifactId}" );
66 ds.setUnpack( false );
67 ds.setScope( Artifact.SCOPE_COMPILE );
68 ds.setFileMode( Integer.toString( 10, 8 ) );
69
70 final Assembly assembly = new Assembly();
71
72 assembly.setId( "test" );
73 assembly.setIncludeBaseDirectory( false );
74 assembly.addDependencySet( ds );
75
76 final MockAndControlForAddDependencySetsTask macTask =
77 new MockAndControlForAddDependencySetsTask( mockManager, project );
78
79 final ArtifactMock artifactMock = new ArtifactMock( mockManager, "group", "dep", "1", "jar", false );
80 final File artifactFile = artifactMock.setNewFile();
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 macTask.expectAddFile( artifactFile, "out/dep", 10 );
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 mockManager.replayAll();
103
104 final DefaultAssemblyContext context = new DefaultAssemblyContext();
105 context.setResolvedArtifacts( Collections.singleton( artifactMock.getArtifact() ) );
106
107 createPhase( macTask, logger ).execute( assembly, macTask.archiver, macTask.configSource, context );
108
109 mockManager.verifyAll();
110 }
111
112 private MavenProject newMavenProject( final String groupId, final String artifactId, final String version )
113 {
114 final Model model = new Model();
115 model.setGroupId( groupId );
116 model.setArtifactId( artifactId );
117 model.setVersion( version );
118
119 return new MavenProject( model );
120 }
121
122 public void testExecute_ShouldNotAddDependenciesWhenProjectHasNone()
123 throws AssemblyFormattingException, ArchiveCreationException, IOException,
124 InvalidAssemblerConfigurationException
125 {
126 final Assembly assembly = new Assembly();
127
128 assembly.setId( "test" );
129 assembly.setIncludeBaseDirectory( false );
130
131 final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
132
133 final MockAndControlForAddDependencySetsTask macTask =
134 new MockAndControlForAddDependencySetsTask( mockManager, null );
135
136 mockManager.replayAll();
137
138 createPhase( macTask, logger ).execute( assembly, null, macTask.configSource, new DefaultAssemblyContext() );
139
140 mockManager.verifyAll();
141 }
142
143 private DependencySetAssemblyPhase createPhase( final MockAndControlForAddDependencySetsTask macTask,
144 final Logger logger )
145 {
146 MavenProjectBuilder projectBuilder = null;
147
148 if ( macTask != null )
149 {
150 projectBuilder = macTask.projectBuilder;
151 }
152
153 final DependencySetAssemblyPhase phase = new DependencySetAssemblyPhase( projectBuilder, logger );
154
155 phase.enableLogging( logger );
156
157 return phase;
158 }
159
160 }