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