1 6 package fr.jayasoft.ivy.ant; 7 8 import java.io.File ; 9 import java.io.IOException ; 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 IVY_RETRIEVE_PATTERN = "build/test/lib/[organisation]/[module]/ivy-[revision].xml"; 21 private static final String RETRIEVE_PATTERN = "build/test/lib/[conf]/[artifact]-[revision].[type]"; 22 private File _cache; 23 private IvyRetrieve _retrieve; 24 private Project _project; 25 26 protected void setUp() throws Exception { 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 ("build/cache"); 40 _cache.mkdirs(); 41 } 42 43 protected void tearDown() throws Exception { 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 ("build/test/lib")); 59 del.execute(); 60 } 61 62 public void testSimple() throws Exception { 63 _project.setProperty("ivy.dep.file", "test/java/fr/jayasoft/ivy/ant/ivy-simple.xml"); 64 _retrieve.execute(); 65 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 66 "org1", "mod1.2", "2.0", "mod1.2", "jar", "jar")).exists()); 67 } 68 69 public void testInline() throws Exception { 70 IvyResolve resolve = new IvyResolve(); 72 resolve.setProject(_project); 73 resolve.setFile(new File ("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 _retrieve.setOrganisation("org1"); 80 _retrieve.setModule("mod1.2"); 81 _retrieve.setRevision("2.0"); 82 _retrieve.setInline(true); 83 _retrieve.execute(); 84 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 85 "org1", "mod1.2", "2.0", "mod1.2", "jar", "jar")).exists()); 86 } 87 88 89 public void testWithConf() throws Exception { 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 (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 94 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "default")).exists()); 95 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 96 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "extension")).exists()); 97 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 98 "org1", "mod1.2", "2.1", "mod1.2", "jar", "jar", "extension")).exists()); 99 } 100 101 public void testSync() throws Exception { 102 _project.setProperty("ivy.dep.file", "test/repositories/1/org6/mod6.2/ivys/ivy-0.4.xml"); 103 _retrieve.setSync(true); 104 105 File [] old = new File [] { 106 new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 107 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "unknown")), new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 109 "org6", "mod6.1", "0.4", "mod6.1", "unknown", "unknown", "default")), new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 111 "org6", "mod6.1", "0.4", "unknown", "jar", "jar", "default")), new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 113 "org6", "mod6.1", "unknown", "mod6.1", "jar", "jar", "default")), }; 115 for (int i = 0; i < old.length; i++) { 116 touch(old[i]); 117 } 118 _retrieve.execute(); 119 120 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 121 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "default")).exists()); 122 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 123 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "extension")).exists()); 124 assertTrue(new File (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 ("build/test/lib/unknown").exists()); } 131 132 public void testWithAPreviousResolve() throws Exception { 133 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 _retrieve.setOrganisation("jayasoft"); 144 _retrieve.setModule("resolve-simple"); 145 _retrieve.setConf("default"); 146 _retrieve.execute(); 147 148 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, "org1", "mod1.2", "2.0", "mod1.2", 149 "jar", "jar")).exists()); 150 } 151 152 public void testUseOrigin() throws Exception { 153 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 _retrieve.setOrganisation("jayasoft"); 166 _retrieve.setModule("resolve-simple"); 167 _retrieve.setConf("default"); 168 _retrieve.setUseOrigin(false); 169 _retrieve.execute(); 170 171 assertTrue(new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, "org1", "mod1.2", "2.0", "mod1.2", 172 "jar", "jar")).exists()); 173 } 174 175 public void testFailureWithoutAPreviousResolve() throws Exception { 176 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 ex) { 184 } 186 } 187 188 public void testFailure() throws Exception { 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 } 196 } 197 198 public void testHaltOnFailure() throws Exception { 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 { 210 _project.setProperty("ivy.dep.file", "test/repositories/1/org2/mod2.5/ivys/ivy-0.6.1.xml"); 212 213 String ivyPattern = IVY_RETRIEVE_PATTERN; 214 215 _retrieve.setIvypattern(ivyPattern); 216 _retrieve.execute(); 217 218 assertTrue(new File (IvyPatternHelper.substitute(ivyPattern, 219 "org2", "mod2.3", "0.4.1", "ivy", "ivy", "xml")).exists()); 220 assertTrue(new File (IvyPatternHelper.substitute(ivyPattern, 221 "org2", "mod2.1", "0.3", "ivy", "ivy", "xml")).exists()); 222 assertTrue(new File (IvyPatternHelper.substitute(ivyPattern, 223 "org1", "mod1.1", "1.0", "ivy", "ivy", "xml")).exists()); 224 assertFalse(new File (IvyPatternHelper.substitute(ivyPattern, 225 "org1", "mod1.2", "2.0", "ivy", "ivy", "xml")).exists()); 226 } 227 228 public void testCustomIvyPatternWithConf() throws Exception { 229 _project.setProperty("ivy.dep.file", "test/repositories/1/org6/mod6.2/ivys/ivy-0.4.xml"); 230 231 String ivyPattern = "build/test/lib/[conf]/[organisation]/[module]/ivy-[revision].xml"; 232 233 _retrieve.setIvypattern(ivyPattern); 234 _retrieve.execute(); 235 236 assertTrue(new File (IvyPatternHelper.substitute(ivyPattern, 237 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "default")).exists()); 238 assertTrue(new File (IvyPatternHelper.substitute(ivyPattern, 239 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "extension")).exists()); 240 assertFalse(new File (IvyPatternHelper.substitute(ivyPattern, 241 "org1", "mod1.2", "2.1", "ivy", "ivy", "xml", "extension")).exists()); 242 } 243 244 public void testSyncWithIvyPattern() throws Exception { 245 _project.setProperty("ivy.dep.file", "test/repositories/1/org6/mod6.2/ivys/ivy-0.4.xml"); 246 247 String ivyPattern = "build/test/lib/[conf]/[organisation]/[module]/ivy-[revision].xml"; 248 249 _retrieve.setIvypattern(ivyPattern); 250 251 _retrieve.setSync(true); 252 253 File [] old = new File [] { 254 new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 255 "org6", "mod6.1", "0.4", "mod6.1", "jar", "jar", "unknown")), new File (IvyPatternHelper.substitute(RETRIEVE_PATTERN, 257 "org6", "mod6.1", "0.4", "mod6.1", "unknown", "unknown", "default")), new File (IvyPatternHelper.substitute(ivyPattern, 259 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "unk")), new File (IvyPatternHelper.substitute(ivyPattern, 261 "unknown", "mod6.1", "0.4", "ivy", "ivy", "xml", "default")), }; 263 for (int i = 0; i < old.length; i++) { 264 touch(old[i]); 265 } 266 267 _retrieve.execute(); 268 269 assertTrue(new File (IvyPatternHelper.substitute(ivyPattern, 270 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "default")).exists()); 271 assertTrue(new File (IvyPatternHelper.substitute(ivyPattern, 272 "org6", "mod6.1", "0.4", "ivy", "ivy", "xml", "extension")).exists()); 273 assertFalse(new File (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 ("build/test/lib/unknown").exists()); 279 assertFalse(new File ("build/test/lib/unk").exists()); 280 assertFalse(new File ("build/test/lib/default/unknown").exists()); 281 } 282 283 public void testDoubleRetrieveWithDifferentConfigurations() { 284 _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 private void touch(File file) throws IOException { 300 if (file.getParentFile() != null) { 301 file.getParentFile().mkdirs(); 302 } 303 file.createNewFile(); 304 } 305 306 } 307 | Popular Tags |