1 package org.apache.maven.plugins.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 java.io.File;
23 import java.io.IOException;
24 import java.util.Collections;
25
26 import junit.framework.TestCase;
27
28 import org.apache.maven.artifact.Artifact;
29 import org.apache.maven.model.Model;
30 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
31 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
32 import org.apache.maven.plugins.assembly.archive.task.testutils.ArtifactMock;
33 import org.apache.maven.plugins.assembly.archive.task.testutils.MockAndControlForAddDependencySetsTask;
34 import org.apache.maven.plugins.assembly.artifact.DependencyResolutionException;
35 import org.apache.maven.plugins.assembly.artifact.DependencyResolver;
36 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
37 import org.apache.maven.plugins.assembly.model.Assembly;
38 import org.apache.maven.plugins.assembly.model.DependencySet;
39 import org.apache.maven.project.MavenProject;
40 import org.codehaus.plexus.logging.Logger;
41 import org.codehaus.plexus.logging.console.ConsoleLogger;
42 import org.easymock.classextension.EasyMockSupport;
43
44 public class DependencySetAssemblyPhaseTest
45 extends TestCase
46 {
47
48 final EasyMockSupport mm = new EasyMockSupport();
49
50 public void testExecute_ShouldAddOneDependencyFromProject()
51 throws AssemblyFormattingException, ArchiveCreationException, IOException,
52 InvalidAssemblerConfigurationException, DependencyResolutionException
53 {
54 final String outputLocation = "/out";
55
56 final MavenProject project = newMavenProject( "group", "project", "0" );
57
58 final ArtifactMock projectArtifactMock = new ArtifactMock( mm, "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( mm, project );
78
79 final ArtifactMock artifactMock = new ArtifactMock( mm, "group", "dep", "1", "jar", false );
80
81 System.out.println(
82 "On test setup, hashcode for dependency artifact: " + artifactMock.getArtifact().hashCode() );
83
84 macTask.expectCSGetRepositories( null, null );
85
86 macTask.expectGetDestFile( new File( "junk" ) );
87
88
89 project.setArtifacts( Collections.singleton( artifactMock.getArtifact() ) );
90
91 macTask.expectCSGetFinalName( "final-name" );
92
93 final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
94
95 final MavenProject depProject = newMavenProject( "group", "dep", "1" );
96
97 macTask.expectBuildFromRepository( depProject );
98
99 macTask.expectResolveDependencySets();
100
101 mm.replayAll();
102
103 createPhase( macTask, logger, macTask.dependencyResolver ).execute( assembly, macTask.archiver,
104 macTask.configSource );
105
106 mm.verifyAll();
107 }
108
109 private MavenProject newMavenProject( final String groupId, final String artifactId, final String version )
110 {
111 final Model model = new Model();
112 model.setGroupId( groupId );
113 model.setArtifactId( artifactId );
114 model.setVersion( version );
115
116 return new MavenProject( model );
117 }
118
119 public void testExecute_ShouldNotAddDependenciesWhenProjectHasNone()
120 throws AssemblyFormattingException, ArchiveCreationException, IOException,
121 InvalidAssemblerConfigurationException, DependencyResolutionException
122 {
123 final Assembly assembly = new Assembly();
124
125 assembly.setId( "test" );
126 assembly.setIncludeBaseDirectory( false );
127
128 final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
129
130 final MockAndControlForAddDependencySetsTask macTask = new MockAndControlForAddDependencySetsTask( mm, null );
131
132 macTask.expectResolveDependencySets();
133
134 mm.replayAll();
135
136 createPhase( macTask, logger, macTask.dependencyResolver ).execute( assembly, null, macTask.configSource );
137
138 mm.verifyAll();
139 }
140
141 private DependencySetAssemblyPhase createPhase( final MockAndControlForAddDependencySetsTask macTask,
142 final Logger logger, DependencyResolver dr )
143 {
144 final DependencySetAssemblyPhase phase = new DependencySetAssemblyPhase( null, dr, null );
145
146 phase.enableLogging( logger );
147
148 return phase;
149 }
150
151 }