1 package org.apache.maven.plugin.dependency.utils;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import java.io.File;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Random;
29
30 import junit.framework.TestCase;
31
32 import org.apache.maven.artifact.Artifact;
33 import org.apache.maven.artifact.DefaultArtifact;
34 import org.apache.maven.artifact.handler.ArtifactHandler;
35 import org.apache.maven.artifact.versioning.VersionRange;
36 import org.apache.maven.plugin.MojoExecutionException;
37 import org.apache.maven.plugin.logging.Log;
38 import org.apache.maven.plugin.testing.SilentLog;
39 import org.apache.maven.plugin.testing.stubs.DefaultArtifactHandlerStub;
40
41
42
43
44
45 public class TestDependencyUtil
46 extends TestCase
47 {
48 List artifacts = new ArrayList();
49
50 Log log = new SilentLog();
51
52 File outputFolder;
53
54 Artifact snap;
55
56 Artifact release;
57
58 Artifact sources;
59
60 protected void setUp()
61 throws Exception
62 {
63 super.setUp();
64
65 ArtifactHandler ah = new DefaultArtifactHandlerStub( "jar", null );
66 VersionRange vr = VersionRange.createFromVersion( "1.1" );
67 release = new DefaultArtifact( "test", "one", vr, Artifact.SCOPE_COMPILE, "jar", "sources", ah, false );
68 artifacts.add( release );
69
70 ah = new DefaultArtifactHandlerStub( "war", null );
71 vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
72 snap = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false );
73 artifacts.add( snap );
74
75 ah = new DefaultArtifactHandlerStub( "war", null );
76 vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
77 sources = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "sources", "sources", ah, false );
78
79
80 Random a = new Random();
81 outputFolder = new File( "target/copy" + a.nextLong() + "/" );
82 outputFolder.delete();
83 assertFalse( outputFolder.exists() );
84 }
85
86 protected void tearDown()
87 {
88
89 }
90
91 public void testDirectoryName()
92 throws MojoExecutionException
93 {
94 File folder = new File( "target/a" );
95 final Artifact artifact = (Artifact) artifacts.get( 0 );
96 File name = DependencyUtil.getFormattedOutputDirectory( false, false, false, false, folder, artifact );
97
98 assertEquals( folder, name );
99
100 name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, folder, artifact );
101 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "one"
102 + File.separatorChar + "1.1";
103 assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) );
104
105 name = DependencyUtil.getFormattedOutputDirectory( true, false, false, false, folder, artifact );
106 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars";
107 assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) );
108
109 name = DependencyUtil.getFormattedOutputDirectory( false, true, false, false, folder, artifact );
110 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources-1.1-jar";
111 assertEquals( expectedResult, name.getAbsolutePath() );
112
113 name = DependencyUtil.getFormattedOutputDirectory( false, true, false, true, folder, artifact );
114 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources-jar";
115 assertEquals( expectedResult, name.getAbsolutePath() );
116
117 name = DependencyUtil.getFormattedOutputDirectory( true, true, false, false, folder, artifact );
118 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar
119 + "one-sources-1.1-jar";
120 assertEquals( expectedResult, name.getAbsolutePath() );
121
122 name = DependencyUtil.getFormattedOutputDirectory( true, true, false, true, folder, artifact );
123 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar
124 + "one-sources-jar";
125 assertEquals( expectedResult, name.getAbsolutePath() );
126 }
127
128 public void testDirectoryName2()
129 throws MojoExecutionException
130 {
131 File folder = new File( "target/a" );
132 final Artifact artifact = (Artifact) artifacts.get( 1 );
133 File name = DependencyUtil.getFormattedOutputDirectory( false, false, false, false, folder, artifact );
134
135 assertEquals( folder, name );
136
137 name = DependencyUtil.getFormattedOutputDirectory( true, false, false, false, folder, artifact );
138 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars";
139 assertEquals( expectedResult, name.getAbsolutePath() );
140
141 name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, folder, artifact );
142 expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "two"
143 + File.separatorChar + "1.1-SNAPSHOT";
144 assertEquals( expectedResult, name.getAbsolutePath() );
145
146 name = DependencyUtil.getFormattedOutputDirectory( false, true, false, false, folder, artifact );
147 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-war";
148 assertEquals( expectedResult, name.getAbsolutePath() );
149
150 name = DependencyUtil.getFormattedOutputDirectory( true, true, false, false, folder, artifact );
151 expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar
152 + "two-1.1-SNAPSHOT-war";
153 assertEquals( expectedResult, name.getAbsolutePath() );
154
155 name = DependencyUtil.getFormattedOutputDirectory( false, true, false, true, folder, artifact );
156 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-war";
157 assertEquals( expectedResult, name.getAbsolutePath() );
158
159 name = DependencyUtil.getFormattedOutputDirectory( true, true, false, true, folder, artifact );
160 expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-war";
161 assertEquals( expectedResult, name.getAbsolutePath() );
162 }
163
164 public void testDirectoryNameSources()
165 throws MojoExecutionException
166 {
167 File folder = new File( "target/a" );
168 File name = DependencyUtil.getFormattedOutputDirectory( false, true, false, true, folder, sources );
169 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources";
170 assertEquals( expectedResult, name.getAbsolutePath() );
171
172 name = DependencyUtil.getFormattedOutputDirectory( false, true, false, false, folder, sources );
173 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources-1.1-SNAPSHOT-sources";
174 assertEquals( expectedResult, name.getAbsolutePath() );
175 }
176
177 public void testFileName()
178 throws MojoExecutionException
179 {
180 Artifact artifact = (Artifact) artifacts.get( 0 );
181
182 String name = DependencyUtil.getFormattedFileName( artifact, false );
183 String expectedResult = "one-1.1-sources.jar";
184 assertEquals( expectedResult, name );
185 name = DependencyUtil.getFormattedFileName( artifact, true );
186 expectedResult = "one-sources.jar";
187 assertEquals( expectedResult, name );
188 }
189
190 public void testTestJar()
191 {
192 ArtifactHandler ah = new DefaultArtifactHandlerStub( "test-jar", null );
193 VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
194 Artifact artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "test-jar", null, ah,
195 false );
196
197 String name = DependencyUtil.getFormattedFileName( artifact, false );
198 String expectedResult = "two-1.1-SNAPSHOT.jar";
199 assertEquals( expectedResult, name );
200
201 }
202
203 public void testFileNameClassifier()
204 throws MojoExecutionException
205 {
206 ArtifactHandler ah = new DefaultArtifactHandlerStub( "jar", "sources" );
207 VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
208 Artifact artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "jar", "sources", ah,
209 false );
210
211 String name = DependencyUtil.getFormattedFileName( artifact, false );
212 String expectedResult = "two-1.1-SNAPSHOT-sources.jar";
213 assertEquals( expectedResult, name );
214
215 name = DependencyUtil.getFormattedFileName( artifact, true );
216 expectedResult = "two-sources.jar";
217 assertEquals( expectedResult, name );
218
219 ah = new DefaultArtifactHandlerStub( "war", null );
220 artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false );
221 name = DependencyUtil.getFormattedFileName( artifact, true );
222 expectedResult = "two.war";
223 assertEquals( expectedResult, name );
224
225 }
226
227 public void testFileNameClassifierWithFile()
228 throws MojoExecutionException
229 {
230
231
232
233
234 ArtifactHandler ah = new DefaultArtifactHandlerStub( "war", "sources" );
235 VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
236 Artifact artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "sources", ah,
237 false );
238 File file = new File( "/target", "test-file-name.jar" );
239 artifact.setFile( file );
240
241 String name = DependencyUtil.getFormattedFileName( artifact, false );
242 String expectedResult = "test-file-name.jar";
243 assertEquals( expectedResult, name );
244
245 name = DependencyUtil.getFormattedFileName( artifact, true );
246 expectedResult = "two-sources.war";
247 assertEquals( expectedResult, name );
248
249 artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false );
250 name = DependencyUtil.getFormattedFileName( artifact, true );
251 expectedResult = "two.war";
252 assertEquals( expectedResult, name );
253
254
255 ah = new DefaultArtifactHandlerStub( "jar", null );
256 artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false );
257 name = DependencyUtil.getFormattedFileName( artifact, true );
258 expectedResult = "two.jar";
259 assertEquals( expectedResult, name );
260
261 }
262 }