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