1 package org.apache.maven.plugins.dependency.utils;
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.util.ArrayList;
24 import java.util.List;
25 import java.util.Random;
26
27 import junit.framework.TestCase;
28
29 import org.apache.maven.artifact.Artifact;
30 import org.apache.maven.artifact.DefaultArtifact;
31 import org.apache.maven.artifact.handler.ArtifactHandler;
32 import org.apache.maven.artifact.versioning.VersionRange;
33 import org.apache.maven.plugin.MojoExecutionException;
34 import org.apache.maven.plugin.logging.Log;
35 import org.apache.maven.plugin.testing.SilentLog;
36 import org.apache.maven.plugin.testing.stubs.DefaultArtifactHandlerStub;
37 import org.codehaus.plexus.util.StringUtils;
38
39
40
41
42 public class TestDependencyUtil
43 extends TestCase
44 {
45 List<Artifact> artifacts = new ArrayList<Artifact>();
46
47 Log log = new SilentLog();
48
49 File outputFolder;
50
51 Artifact snap;
52
53 Artifact snapResolvedVersion;
54
55 Artifact release;
56
57 Artifact sources;
58
59 protected void setUp()
60 throws Exception
61 {
62 super.setUp();
63
64 ArtifactHandler ah = new DefaultArtifactHandlerStub( "jar", null );
65 VersionRange vr = VersionRange.createFromVersion( "1.1" );
66 release = new DefaultArtifact( "test", "one", vr, Artifact.SCOPE_COMPILE, "jar", "sources", ah, false );
67 artifacts.add( release );
68
69 ah = new DefaultArtifactHandlerStub( "war", null );
70 vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
71 snap = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false );
72 artifacts.add( snap );
73
74 ah = new DefaultArtifactHandlerStub( "war", null );
75 vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
76 snapResolvedVersion =
77 new DefaultArtifact( "test", "three", vr, Artifact.SCOPE_PROVIDED, "war", null, ah, false );
78 snapResolvedVersion.setResolvedVersion( "1.1-20121003.035531-117" );
79 artifacts.add( snapResolvedVersion );
80
81 ah = new DefaultArtifactHandlerStub( "war", null );
82 vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
83 sources = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "sources", "sources", ah, false );
84
85
86 Random a = new Random();
87 outputFolder = new File( "target/copy" + a.nextLong() + "/" );
88 outputFolder.delete();
89 assertFalse( outputFolder.exists() );
90 }
91
92 protected void tearDown()
93 {
94
95 }
96
97 public void testDirectoryName()
98 throws MojoExecutionException
99 {
100 File folder = new File( "target/a" );
101 final Artifact artifact = artifacts.get( 0 );
102 File name = DependencyUtil.getFormattedOutputDirectory( false, false, false, false, false, folder, artifact );
103
104 assertEquals( folder, name );
105
106 name = DependencyUtil.getFormattedOutputDirectory( false, false, false, true, false, folder, artifact );
107 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "one"
108 + File.separatorChar + "1.1";
109 assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) );
110
111 name = DependencyUtil.getFormattedOutputDirectory( false, true, false, false, false, folder, artifact );
112 expectedResult = folder.getAbsolutePath() + File.separatorChar + "jars";
113 assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) );
114
115 name = DependencyUtil.getFormattedOutputDirectory( true, false, false, false, false, folder, artifact );
116 expectedResult = folder.getAbsolutePath() + File.separatorChar + "compile";
117 assertEquals( expectedResult, name.getAbsolutePath() );
118 assertTrue( expectedResult.equalsIgnoreCase( name.getAbsolutePath() ) );
119
120 name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, false, folder, artifact );
121 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-1.1-sources-jar";
122 assertEquals( expectedResult, name.getAbsolutePath() );
123
124 name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, true, folder, artifact );
125 expectedResult = folder.getAbsolutePath() + File.separatorChar + "one-sources-jar";
126 assertEquals( expectedResult, name.getAbsolutePath() );
127
128 name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, false, folder, artifact );
129 expectedResult =
130 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-1.1-sources-jar";
131 assertEquals( expectedResult, name.getAbsolutePath() );
132
133 name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, true, folder, artifact );
134 expectedResult =
135 folder.getAbsolutePath() + File.separatorChar + "jars" + File.separatorChar + "one-sources-jar";
136 assertEquals( expectedResult, name.getAbsolutePath() );
137
138 name = DependencyUtil.getFormattedOutputDirectory( true, false, true, false, true, folder, artifact );
139 expectedResult =
140 folder.getAbsolutePath() + File.separatorChar + "compile" + File.separatorChar + "one-sources-jar";
141 assertEquals( expectedResult, name.getAbsolutePath() );
142 }
143
144 public void testDirectoryName2()
145 throws MojoExecutionException
146 {
147 File folder = new File( "target/a" );
148 final Artifact artifact = artifacts.get( 1 );
149 File name = DependencyUtil.getFormattedOutputDirectory( false, false, false, false, false, folder, artifact );
150
151 assertEquals( folder, name );
152
153 name = DependencyUtil.getFormattedOutputDirectory( false, true, false, false, false, folder, artifact );
154 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars";
155 assertEquals( expectedResult, name.getAbsolutePath() );
156
157 name = DependencyUtil.getFormattedOutputDirectory( false, false, false, true, false, folder, artifact );
158 expectedResult = folder.getAbsolutePath() + File.separatorChar + "test" + File.separatorChar + "two"
159 + File.separatorChar + "1.1-SNAPSHOT";
160 assertEquals( expectedResult, name.getAbsolutePath() );
161
162 name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, false, folder, artifact );
163 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-war";
164 assertEquals( expectedResult, name.getAbsolutePath() );
165
166 name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, false, folder, artifact );
167 expectedResult =
168 folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-1.1-SNAPSHOT-war";
169 assertEquals( expectedResult, name.getAbsolutePath() );
170
171 name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, true, folder, artifact );
172 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-war";
173 assertEquals( expectedResult, name.getAbsolutePath() );
174
175 name = DependencyUtil.getFormattedOutputDirectory( false, true, true, false, true, folder, artifact );
176 expectedResult = folder.getAbsolutePath() + File.separatorChar + "wars" + File.separatorChar + "two-war";
177 assertEquals( expectedResult, name.getAbsolutePath() );
178 }
179
180 public void testDirectoryNameSources()
181 throws MojoExecutionException
182 {
183 File folder = new File( "target/a" );
184 File name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, true, folder, sources );
185 String expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-sources";
186 assertEquals( expectedResult, name.getAbsolutePath() );
187
188 name = DependencyUtil.getFormattedOutputDirectory( false, false, true, false, false, folder, sources );
189 expectedResult = folder.getAbsolutePath() + File.separatorChar + "two-1.1-SNAPSHOT-sources";
190 assertEquals( expectedResult, name.getAbsolutePath() );
191 }
192
193 public void testFileName()
194 throws MojoExecutionException
195 {
196 Artifact artifact = artifacts.get( 0 );
197
198 String name = DependencyUtil.getFormattedFileName( artifact, false );
199 String expectedResult = "one-1.1-sources.jar";
200 assertEquals( expectedResult, name );
201 name = DependencyUtil.getFormattedFileName( artifact, true );
202 expectedResult = "one-sources.jar";
203 assertEquals( expectedResult, name );
204 }
205
206 public void testFileNameUseBaseVersion()
207 throws MojoExecutionException
208 {
209 Artifact artifact = snapResolvedVersion;
210
211 String name = DependencyUtil.getFormattedFileName( artifact, false, false, true );
212 String expectedResult = "three-1.1-SNAPSHOT.war";
213 assertEquals( expectedResult, name );
214 name = DependencyUtil.getFormattedFileName( artifact, false, false, false );
215 expectedResult = "three-1.1-20121003.035531-117.war";
216 assertEquals( expectedResult, name );
217 }
218
219 public void testTestJar()
220 {
221 ArtifactHandler ah = new DefaultArtifactHandlerStub( "test-jar", null );
222 VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
223 Artifact artifact =
224 new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "test-jar", null, ah, false );
225
226 String name = DependencyUtil.getFormattedFileName( artifact, false );
227 String expectedResult = "two-1.1-SNAPSHOT.jar";
228 assertEquals( expectedResult, name );
229
230 }
231
232 public void testFileNameClassifier()
233 throws MojoExecutionException
234 {
235 ArtifactHandler ah = new DefaultArtifactHandlerStub( "jar", "sources" );
236 VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
237 Artifact artifact =
238 new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "jar", "sources", ah, false );
239
240 String name = DependencyUtil.getFormattedFileName( artifact, false );
241 String expectedResult = "two-1.1-SNAPSHOT-sources.jar";
242 assertEquals( expectedResult, name );
243
244 name = DependencyUtil.getFormattedFileName( artifact, true );
245 expectedResult = "two-sources.jar";
246 assertEquals( expectedResult, name );
247
248 name = DependencyUtil.getFormattedFileName( artifact, false, false, false, true );
249 expectedResult = "two-1.1-SNAPSHOT.jar";
250 assertEquals( expectedResult, name );
251
252 ah = new DefaultArtifactHandlerStub( "war", null );
253 artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false );
254 name = DependencyUtil.getFormattedFileName( artifact, true );
255 expectedResult = "two.war";
256 assertEquals( expectedResult, name );
257 }
258
259 public void testFileNameClassifierWithFile()
260 throws MojoExecutionException
261 {
262
263
264
265
266 ArtifactHandler ah = new DefaultArtifactHandlerStub( "war", "sources" );
267 VersionRange vr = VersionRange.createFromVersion( "1.1-SNAPSHOT" );
268 Artifact artifact =
269 new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "sources", ah, false );
270 File file = new File( "/target", "test-file-name.jar" );
271 artifact.setFile( file );
272
273 String name = DependencyUtil.getFormattedFileName( artifact, false );
274 String expectedResult = "two-1.1-SNAPSHOT-sources.war";
275 assertEquals( expectedResult, name );
276
277 name = DependencyUtil.getFormattedFileName( artifact, false, false, false, true );
278 expectedResult = "two-1.1-SNAPSHOT.war";
279 assertEquals( expectedResult, name );
280
281 name = DependencyUtil.getFormattedFileName( artifact, true );
282 expectedResult = "two-sources.war";
283 assertEquals( expectedResult, name );
284
285 artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false );
286 name = DependencyUtil.getFormattedFileName( artifact, true );
287 expectedResult = "two.war";
288 assertEquals( expectedResult, name );
289
290
291 ah = new DefaultArtifactHandlerStub( "jar", null );
292 artifact = new DefaultArtifact( "test", "two", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false );
293 name = DependencyUtil.getFormattedFileName( artifact, true );
294 expectedResult = "two.jar";
295 assertEquals( expectedResult, name );
296
297 }
298
299 public void testTokenizer()
300 {
301 String[] tokens = DependencyUtil.tokenizer( " alpha,bravo, charlie , delta kappa, theta" );
302 String[] expected = new String[] { "alpha", "bravo", "charlie", "delta kappa", "theta" };
303
304 assertEquals( StringUtils.join( expected, ", " ), StringUtils.join( tokens, ", " ) );
305 assertEquals( expected.length, tokens.length );
306
307 tokens = DependencyUtil.tokenizer( " \r\n a, \t \n \r b \t \n \r" );
308 assertEquals( 2, tokens.length );
309 assertEquals( "a", tokens[0] );
310 assertEquals( "b", tokens[1] );
311
312 tokens = DependencyUtil.tokenizer( null );
313 assertEquals( 0, tokens.length );
314
315 tokens = DependencyUtil.tokenizer( " " );
316 assertEquals( 0, tokens.length );
317 }
318 }