KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fr > jayasoft > ivy > ant > IvyRetrieveTest


1 /*
2  * This file is subject to the license found in LICENCE.TXT in the root directory of the project.
3  *
4  * #SNAPSHOT#
5  */

6 package fr.jayasoft.ivy.ant;
7
8 import java.io.File JavaDoc;
9 import java.io.IOException JavaDoc;
10
11 import junit.framework.TestCase;
12
13 import org.apache.tools.ant.BuildException;
14 import org.apache.tools.ant.Project;
15 import org.apache.tools.ant.taskdefs.Delete;
16
17 import fr.jayasoft.ivy.util.IvyPatternHelper;
18
19 public class IvyRetrieveTest extends TestCase {
20     private static final String JavaDoc IVY_RETRIEVE_PATTERN = "build/test/lib/[organisation]/[module]/ivy-[revision].xml";
21     private static final String JavaDoc RETRIEVE_PATTERN = "build/test/lib/[conf]/[artifact]-[revision].[type]";
22     private File JavaDoc _cache;
23     private IvyRetrieve _retrieve;
24     private Project _project;
25
26     protected void setUp() throws Exception JavaDoc {
27         createCache();
28         cleanTestLib();
29         _project = new Project();
30         _project.setProperty("ivy.conf.file", "test/repositories/ivyconf.xml");
31
32         _retrieve = new IvyRetrieve();
33         _retrieve.setProject(_project);
34         _retrieve.setCache(_cache);
35         _retrieve.setPattern(RETRIEVE_PATTERN);
36     }
37
38     private void createCache() {
39         _cache = new File JavaDoc("build/cache");
40         _cache.mkdirs();
41     }
42
43     protected void tearDown() throws Exception JavaDoc {
44         cleanCache();
45         cleanTestLib();
46     }
47
48     private void cleanCache() {
49         Delete del = new Delete();
50         del.setProject(new Project());
51         del.setDir(_cache);
52         del.execute();
53     }
54
55     private void cleanTestLib() {
56         Delete del = new Delete();
57         del.setProject(new Project());
58         del.setDir(new File JavaDoc("build/test/lib"));
59         del.execute();
60     }
61
62     public void testSimple() throws Exception JavaDoc {
63         _project.setProperty("ivy.dep.file", "test/java/fr/jayasoft/ivy/ant/ivy-simple.xml");
64         _retrieve.execute();
65         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
66                 "org1", "mod1.2", "2.0", "mod1.2", "jar", "jar")).exists());
67     }
68     
69     public void testInline() throws Exception JavaDoc {
70         // we first resolve another ivy file
71
IvyResolve resolve = new IvyResolve();
72         resolve.setProject(_project);
73         resolve.setFile(new File JavaDoc("test/java/fr/jayasoft/ivy/ant/ivy-latest.xml"));
74         resolve.execute();
75         
76         assertTrue(_retrieve.getIvyInstance().getArchiveFileInCache(_cache, "org1", "mod1.2", "2.2", "mod1.2", "jar", "jar").exists());
77         
78         // then we resolve a dependency directly
79
_retrieve.setOrganisation("org1");
80         _retrieve.setModule("mod1.2");
81         _retrieve.setRevision("2.0");
82         _retrieve.setInline(true);
83         _retrieve.execute();
84         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
85                 "org1", "mod1.2", "2.0", "mod1.2", "jar", "jar")).exists());
86     }
87
88
89     public void testWithConf() throws Exception JavaDoc {
90         _project.setProperty("ivy.dep.file", "test/repositories/1/org6/mod6.2/ivys/ivy-0.4.xml");
91         _retrieve.execute();
92
93         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
94                 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "default")).exists());
95         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
96                 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "extension")).exists());
97         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
98                 "org1", "mod1.2", "2.1", "mod1.2", "jar", "jar", "extension")).exists());
99     }
100
101     public void testSync() throws Exception JavaDoc {
102         _project.setProperty("ivy.dep.file", "test/repositories/1/org6/mod6.2/ivys/ivy-0.4.xml");
103         _retrieve.setSync(true);
104         
105         File JavaDoc[] old = new File JavaDoc[] {
106                 new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
107                         "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "unknown")), // unknown configuration
108
new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
109                         "org6", "mod6.1", "0.4", "mod6.1", "unknown", "unknown", "default")), // unknown type
110
new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
111                         "org6", "mod6.1", "0.4", "unknown", "jar", "jar", "default")), // unknown artifact
112
new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
113                         "org6", "mod6.1", "unknown", "mod6.1", "jar", "jar", "default")), // unknown revision
114
};
115         for (int i = 0; i < old.length; i++) {
116             touch(old[i]);
117         }
118         _retrieve.execute();
119
120         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
121                 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "default")).exists());
122         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
123                 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "extension")).exists());
124         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
125                 "org1", "mod1.2", "2.1", "mod1.2", "jar", "jar", "extension")).exists());
126         for (int i = 0; i < old.length; i++) {
127             assertFalse(old[i] +" should have been deleted by sync", old[i].exists());
128         }
129         assertFalse(new File JavaDoc("build/test/lib/unknown").exists()); //even conf directory should have been deleted
130
}
131
132     public void testWithAPreviousResolve() throws Exception JavaDoc {
133         // first we do a resolve in another project
134
Project project = new Project();
135         project.setProperty("ivy.conf.file", "test/repositories/ivyconf.xml");
136         project.setProperty("ivy.dep.file", "test/java/fr/jayasoft/ivy/ant/ivy-simple.xml");
137         IvyResolve resolve = new IvyResolve();
138         resolve.setProject(project);
139         resolve.setCache(_cache);
140         resolve.execute();
141
142         // then we do a retrieve with the correct module information
143
_retrieve.setOrganisation("jayasoft");
144         _retrieve.setModule("resolve-simple");
145         _retrieve.setConf("default");
146         _retrieve.execute();
147
148         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN, "org1", "mod1.2", "2.0", "mod1.2",
149                 "jar", "jar")).exists());
150     }
151
152     public void testUseOrigin() throws Exception JavaDoc {
153         // test case for IVY-304
154
// first we do a resolve with useOrigin=true in another project
155
Project project = new Project();
156         project.setProperty("ivy.conf.file", "test/repositories/ivyconf.xml");
157         project.setProperty("ivy.dep.file", "test/java/fr/jayasoft/ivy/ant/ivy-simple.xml");
158         IvyResolve resolve = new IvyResolve();
159         resolve.setProject(project);
160         resolve.setCache(_cache);
161         resolve.setUseOrigin(true);
162         resolve.execute();
163
164         // then we do a retrieve with the correct module information and useOrigin=false
165
_retrieve.setOrganisation("jayasoft");
166         _retrieve.setModule("resolve-simple");
167         _retrieve.setConf("default");
168         _retrieve.setUseOrigin(false);
169         _retrieve.execute();
170
171         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN, "org1", "mod1.2", "2.0", "mod1.2",
172                 "jar", "jar")).exists());
173     }
174
175     public void testFailureWithoutAPreviousResolve() throws Exception JavaDoc {
176         // we do a retrieve with the module information whereas no resolve has been previously done
177
try {
178             _retrieve.setOrganisation("jayasoft");
179             _retrieve.setModule("resolve-simple");
180             _retrieve.setConf("default");
181             _retrieve.execute();
182             fail("retrieve without previous resolve should have thrown an exception");
183         } catch (Exception JavaDoc ex) {
184             // OK
185
}
186     }
187
188     public void testFailure() throws Exception JavaDoc {
189         try {
190             _project.setProperty("ivy.dep.file", "test/java/fr/jayasoft/ivy/ant/ivy-failure.xml");
191             _retrieve.execute();
192             fail("failure didn't raised an exception with default haltonfailure setting");
193         } catch (BuildException ex) {
194             // ok => should raised an exception
195
}
196     }
197
198     public void testHaltOnFailure() throws Exception JavaDoc {
199         try {
200             _project.setProperty("ivy.dep.file", "test/java/fr/jayasoft/ivy/ant/ivy-failure.xml");
201             _retrieve.setHaltonfailure(false);
202             _retrieve.execute();
203
204         } catch (BuildException ex) {
205             fail("failure raised an exception with haltonfailure set to false");
206         }
207     }
208
209     public void testCustomIvyPattern() throws Exception JavaDoc {
210         // mod2.5 depends on virtual mod2.3 which depends on mod2.1 which depends on mod1.1 which depends on mod1.2
211
_project.setProperty("ivy.dep.file", "test/repositories/1/org2/mod2.5/ivys/ivy-0.6.1.xml");
212
213         String JavaDoc ivyPattern = IVY_RETRIEVE_PATTERN;
214
215         _retrieve.setIvypattern(ivyPattern);
216         _retrieve.execute();
217
218         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
219                 "org2", "mod2.3", "0.4.1", "ivy", "ivy", "xml")).exists());
220         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
221                 "org2", "mod2.1", "0.3", "ivy", "ivy", "xml")).exists());
222         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
223                 "org1", "mod1.1", "1.0", "ivy", "ivy", "xml")).exists());
224         assertFalse(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
225                 "org1", "mod1.2", "2.0", "ivy", "ivy", "xml")).exists());
226     }
227     
228     public void testCustomIvyPatternWithConf() throws Exception JavaDoc {
229         _project.setProperty("ivy.dep.file", "test/repositories/1/org6/mod6.2/ivys/ivy-0.4.xml");
230
231         String JavaDoc ivyPattern = "build/test/lib/[conf]/[organisation]/[module]/ivy-[revision].xml";
232
233         _retrieve.setIvypattern(ivyPattern);
234         _retrieve.execute();
235
236         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
237                 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "default")).exists());
238         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
239                 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "extension")).exists());
240         assertFalse(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
241                 "org1", "mod1.2", "2.1", "ivy", "ivy", "xml", "extension")).exists());
242     }
243
244     public void testSyncWithIvyPattern() throws Exception JavaDoc {
245         _project.setProperty("ivy.dep.file", "test/repositories/1/org6/mod6.2/ivys/ivy-0.4.xml");
246
247         String JavaDoc ivyPattern = "build/test/lib/[conf]/[organisation]/[module]/ivy-[revision].xml";
248
249         _retrieve.setIvypattern(ivyPattern);
250
251         _retrieve.setSync(true);
252         
253         File JavaDoc[] old = new File JavaDoc[] {
254                 new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
255                         "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "unknown")), // unknown configuration
256
new File JavaDoc(IvyPatternHelper.substitute(RETRIEVE_PATTERN,
257                         "org6", "mod6.1", "0.4", "mod6.1", "unknown", "unknown", "default")), // unknown type
258
new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
259                         "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "unk")), // unknown conf for ivy
260
new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
261                         "unknown", "mod6.1", "0.4", "ivy", "ivy", "xml", "default")), // unknown organisation for ivy
262
};
263         for (int i = 0; i < old.length; i++) {
264             touch(old[i]);
265         }
266
267         _retrieve.execute();
268
269         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
270                 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "default")).exists());
271         assertTrue(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
272                 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "extension")).exists());
273         assertFalse(new File JavaDoc(IvyPatternHelper.substitute(ivyPattern,
274                 "org1", "mod1.2", "2.1", "ivy", "ivy", "xml", "extension")).exists());
275         for (int i = 0; i < old.length; i++) {
276             assertFalse(old[i] +" should have been deleted by sync", old[i].exists());
277         }
278         assertFalse(new File JavaDoc("build/test/lib/unknown").exists());
279         assertFalse(new File JavaDoc("build/test/lib/unk").exists());
280         assertFalse(new File JavaDoc("build/test/lib/default/unknown").exists());
281     }
282     
283     public void testDoubleRetrieveWithDifferentConfigurations() {
284         // IVY-315
285
_project.setProperty("ivy.dep.file", "test/java/fr/jayasoft/ivy/ant/ivy-doubleretrieve.xml");
286         
287         _retrieve.setConf("compile");
288         _retrieve.execute();
289         
290         _retrieve = new IvyRetrieve();
291         _retrieve.setProject(_project);
292         _retrieve.setCache(_cache);
293         _retrieve.setPattern(RETRIEVE_PATTERN);
294         _retrieve.setConf("compile,unittest");
295         _retrieve.execute();
296     }
297
298     // creates an empty file, creating parent directories if necessary
299
private void touch(File JavaDoc file) throws IOException JavaDoc {
300         if (file.getParentFile() != null) {
301             file.getParentFile().mkdirs();
302         }
303         file.createNewFile();
304     }
305
306 }
307
Popular Tags