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