1 6 package fr.jayasoft.ivy.xml; 7 8 import java.io.File ; 9 import java.net.URL ; 10 import java.util.List ; 11 12 import junit.framework.TestCase; 13 import fr.jayasoft.ivy.DependencyResolver; 14 import fr.jayasoft.ivy.Ivy; 15 import fr.jayasoft.ivy.LatestStrategy; 16 import fr.jayasoft.ivy.ModuleId; 17 import fr.jayasoft.ivy.latest.LatestRevisionStrategy; 18 import fr.jayasoft.ivy.latest.LatestTimeStrategy; 19 import fr.jayasoft.ivy.parser.ModuleDescriptorParserRegistry; 20 import fr.jayasoft.ivy.report.ReportOutputter; 21 import fr.jayasoft.ivy.report.ResolveReport; 22 import fr.jayasoft.ivy.resolver.ChainResolver; 23 import fr.jayasoft.ivy.resolver.FileSystemResolver; 24 import fr.jayasoft.ivy.resolver.IvyRepResolver; 25 import fr.jayasoft.ivy.resolver.MockResolver; 26 import fr.jayasoft.ivy.url.URLHandler; 27 import fr.jayasoft.ivy.url.URLHandlerDispatcher; 28 import fr.jayasoft.ivy.url.URLHandlerRegistry; 29 import fr.jayasoft.ivy.version.ChainVersionMatcher; 30 import fr.jayasoft.ivy.version.MockVersionMatcher; 31 import fr.jayasoft.ivy.version.VersionMatcher; 32 33 36 public class XmlIvyConfigurationParserTest extends TestCase { 37 public void test() throws Exception { 38 Ivy ivy = new Ivy(); 39 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 40 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-test.xml")); 41 42 File defaultCache = ivy.getDefaultCache(); 43 assertNotNull(defaultCache); 44 assertEquals("mycache", defaultCache.getName()); 45 46 assertFalse(ivy.isCheckUpToDate()); 47 assertFalse(ivy.doValidate()); 48 49 assertEquals("[module]/ivys/ivy-[revision].xml", ivy.getCacheIvyPattern()); 50 assertEquals("[module]/[type]s/[artifact]-[revision].[ext]", ivy.getCacheArtifactPattern()); 51 52 LatestStrategy latest = ivy.getLatestStrategy("mylatest-revision"); 53 assertNotNull(latest); 54 assertTrue(latest instanceof LatestRevisionStrategy); 55 LatestRevisionStrategy l = (LatestRevisionStrategy)latest; 56 assertEquals(new Integer (-2), l.getSpecialMeanings().get("pre")); 57 assertEquals(new Integer (4), l.getSpecialMeanings().get("qa")); 58 59 DependencyResolver defaultResolver = ivy.getDefaultResolver(); 60 assertNotNull(defaultResolver); 61 assertEquals("libraries", defaultResolver.getName()); 62 assertTrue(defaultResolver instanceof FileSystemResolver); 63 FileSystemResolver fsres = (FileSystemResolver)defaultResolver; 64 List ivyPatterns = fsres.getIvyPatterns(); 65 assertNotNull(ivyPatterns); 66 assertEquals(1, ivyPatterns.size()); 67 assertEquals("lib/[organisation]/[module]/ivys/ivy-[revision].xml", ivyPatterns.get(0)); 68 69 LatestStrategy strategy = fsres.getLatestStrategy(); 70 assertNotNull(strategy); 71 assertTrue(strategy instanceof LatestRevisionStrategy); 72 73 DependencyResolver internal = ivy.getResolver("internal"); 74 assertNotNull(internal); 75 assertTrue(internal instanceof ChainResolver); 76 ChainResolver chain = (ChainResolver)internal; 77 List subresolvers = chain.getResolvers(); 78 assertNotNull(subresolvers); 79 assertEquals(2, subresolvers.size()); 80 FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0); 81 assertEquals("int1", fsInt1.getName()); 82 assertEquals(1, fsInt1.getIvyPatterns().size()); 83 assertEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml", fsInt1.getIvyPatterns().get(0)); 84 assertEquals("int2", ((DependencyResolver)subresolvers.get(1)).getName()); 85 86 strategy = fsInt1.getLatestStrategy(); 87 assertNotNull(strategy); 88 assertTrue(strategy instanceof LatestTimeStrategy); 89 90 assertEquals("libraries", ivy.getResolver(new ModuleId("unknown", "lib")).getName()); 91 assertEquals("internal", ivy.getResolver(new ModuleId("jayasoft", "swtbinding")).getName()); 92 assertEquals("int1", ivy.getResolver(new ModuleId("jayasoft", "ivy")).getName()); 93 assertEquals("int1", ivy.getResolver(new ModuleId("jayasoft", "ivycruise")).getName()); 94 } 95 96 public void testTypedef() throws Exception { 97 Ivy ivy = new Ivy(); 98 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 99 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-typedef.xml")); 100 101 DependencyResolver mock = ivy.getResolver("mock3"); 102 assertNotNull(mock); 103 assertTrue(mock instanceof MockResolver); 104 105 DependencyResolver internal = ivy.getResolver("internal"); 106 assertNotNull(internal); 107 assertTrue(internal instanceof ChainResolver); 108 ChainResolver chain = (ChainResolver)internal; 109 List subresolvers = chain.getResolvers(); 110 assertNotNull(subresolvers); 111 assertEquals(2, subresolvers.size()); 112 113 assertEquals("mock1", ((DependencyResolver)subresolvers.get(0)).getName()); 114 assertEquals("mock2", ((DependencyResolver)subresolvers.get(1)).getName()); 115 assertTrue(subresolvers.get(0) instanceof MockResolver); 116 assertTrue(subresolvers.get(1) instanceof MockResolver); 117 } 118 119 public void testStatuses() throws Exception { 120 Ivy ivy = new Ivy(); 121 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 122 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-status.xml")); 123 124 assertEquals("bronze", ivy.getStatusManager().getDefaultStatus()); 125 assertEquals(0, ivy.getStatusManager().getPriority("gold")); 126 assertEquals(1, ivy.getStatusManager().getPriority("silver")); 127 assertEquals(2, ivy.getStatusManager().getPriority("bronze")); 128 assertEquals(false, ivy.getStatusManager().isIntegration("gold")); 129 assertEquals(false, ivy.getStatusManager().isIntegration("silver")); 130 assertEquals(true, ivy.getStatusManager().isIntegration("bronze")); 131 } 132 133 public void testConflictManager() throws Exception { 134 Ivy ivy = new Ivy(); 135 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 136 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-conflict-manager.xml")); 137 138 assertEquals("latest-time", ivy.getConflictManager(new ModuleId("jayasoft", "ivyde")).getName()); 139 assertEquals("all", ivy.getConflictManager(new ModuleId("jayasoft", "uistate")).getName()); 140 } 141 142 public void testVersionMatchers1() throws Exception { 143 Ivy ivy = new Ivy(); 144 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 145 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-vmatcher1.xml")); 146 147 VersionMatcher mock = ivy.getVersionMatcher("vmock"); 148 assertNotNull(mock); 149 assertTrue(mock instanceof MockVersionMatcher); 150 151 VersionMatcher v = ivy.getVersionMatcher(); 152 assertTrue(v instanceof ChainVersionMatcher); 153 ChainVersionMatcher chain = (ChainVersionMatcher) v; 154 assertEquals(3, chain.getMatchers().size()); 155 assertTrue(chain.getMatchers().contains(mock)); 156 assertTrue(chain.getMatchers().contains(ivy.getVersionMatcher("exact"))); 157 assertTrue(chain.getMatchers().contains(ivy.getVersionMatcher("latest"))); 158 } 159 160 public void testVersionMatchers2() throws Exception { 161 Ivy ivy = new Ivy(); 162 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 163 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-vmatcher2.xml")); 164 165 VersionMatcher mock = ivy.getVersionMatcher("vmock"); 166 assertNotNull(mock); 167 assertTrue(mock instanceof MockVersionMatcher); 168 169 VersionMatcher v = ivy.getVersionMatcher(); 170 assertTrue(v instanceof ChainVersionMatcher); 171 ChainVersionMatcher chain = (ChainVersionMatcher) v; 172 assertEquals(5, chain.getMatchers().size()); 173 assertTrue(chain.getMatchers().contains(mock)); 174 } 175 176 public void testRef() throws Exception { 177 Ivy ivy = new Ivy(); 178 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 179 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-ref.xml")); 180 181 DependencyResolver internal = ivy.getResolver("internal"); 182 assertNotNull(internal); 183 assertTrue(internal instanceof ChainResolver); 184 ChainResolver chain = (ChainResolver)internal; 185 List subresolvers = chain.getResolvers(); 186 assertNotNull(subresolvers); 187 assertEquals(2, subresolvers.size()); 188 FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0); 189 assertEquals("fs", fsInt1.getName()); 190 191 List ivyPatterns = fsInt1.getIvyPatterns(); 192 assertNotNull(ivyPatterns); 193 assertEquals(1, ivyPatterns.size()); 194 assertEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml", ivyPatterns.get(0)); 195 196 DependencyResolver external = ivy.getResolver("external"); 197 assertNotNull(external); 198 assertTrue(external instanceof ChainResolver); 199 chain = (ChainResolver)external; 200 subresolvers = chain.getResolvers(); 201 assertNotNull(subresolvers); 202 assertEquals(1, subresolvers.size()); 203 FileSystemResolver fsInt2 = (FileSystemResolver)subresolvers.get(0); 204 assertEquals("fs", fsInt2.getName()); 205 206 ivyPatterns = fsInt2.getIvyPatterns(); 207 assertNotNull(ivyPatterns); 208 assertEquals(1, ivyPatterns.size()); 209 assertEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml", ivyPatterns.get(0)); 210 } 211 212 public void testMacro() throws Exception { 213 Ivy ivy = new Ivy(); 214 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 215 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-macro.xml")); 216 217 DependencyResolver def = ivy.getResolver("default"); 218 assertNotNull(def); 219 assertTrue(def instanceof ChainResolver); 220 ChainResolver chain = (ChainResolver)def; 221 List subresolvers = chain.getResolvers(); 222 assertNotNull(subresolvers); 223 assertEquals(2, subresolvers.size()); 224 FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0); 225 assertEquals("default-fs1", fsInt1.getName()); 226 227 List ivyPatterns = fsInt1.getIvyPatterns(); 228 assertNotNull(ivyPatterns); 229 assertEquals(1, ivyPatterns.size()); 230 assertEquals("path/to/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]", ivyPatterns.get(0)); 231 232 FileSystemResolver fsInt2 = (FileSystemResolver)subresolvers.get(1); 233 assertEquals("default-fs2", fsInt2.getName()); 234 235 ivyPatterns = fsInt2.getIvyPatterns(); 236 assertNotNull(ivyPatterns); 237 assertEquals(1, ivyPatterns.size()); 238 assertEquals("path/to/secondrep/[organisation]/[module]/[type]s/ivy-[revision].xml", ivyPatterns.get(0)); 239 240 DependencyResolver other = ivy.getResolver("other"); 241 assertNotNull(other); 242 assertTrue(other instanceof ChainResolver); 243 chain = (ChainResolver)other; 244 subresolvers = chain.getResolvers(); 245 assertNotNull(subresolvers); 246 assertEquals(2, subresolvers.size()); 247 248 fsInt2 = (FileSystemResolver)subresolvers.get(1); 249 assertEquals("other-fs2", fsInt2.getName()); 250 251 ivyPatterns = fsInt2.getIvyPatterns(); 252 assertNotNull(ivyPatterns); 253 assertEquals(1, ivyPatterns.size()); 254 assertEquals("path/to/secondrep/[module]/[type]s/ivy-[revision].xml", ivyPatterns.get(0)); 255 } 256 257 public void testMacroAndRef() throws Exception { 258 Ivy ivy = new Ivy(); 260 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 261 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-macro+ref.xml")); 262 263 DependencyResolver shared = ivy.getResolver("shared"); 264 assertNotNull(shared); 265 assertTrue(shared instanceof FileSystemResolver); 266 267 DependencyResolver mychain = ivy.getResolver("mychain"); 268 assertNotNull(mychain); 269 assertTrue(mychain instanceof ChainResolver); 270 ChainResolver chain = (ChainResolver)mychain; 271 List subresolvers = chain.getResolvers(); 272 assertNotNull(subresolvers); 273 assertEquals(1, subresolvers.size()); 274 shared = (DependencyResolver) subresolvers.get(0); 275 assertEquals("shared", shared.getName()); 276 assertTrue(shared instanceof FileSystemResolver); 277 } 278 279 public void testInclude() throws Exception { 280 Ivy ivy = new Ivy(); 281 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 282 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-include.xml")); 283 284 DependencyResolver def = ivy.getResolver("default"); 285 assertNotNull(def); 286 assertTrue(def instanceof ChainResolver); 287 ChainResolver chain = (ChainResolver)def; 288 List subresolvers = chain.getResolvers(); 289 assertNotNull(subresolvers); 290 assertEquals(2, subresolvers.size()); 291 FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0); 292 assertEquals("default-fs1", fsInt1.getName()); 293 294 List ivyPatterns = fsInt1.getIvyPatterns(); 295 assertNotNull(ivyPatterns); 296 assertEquals(1, ivyPatterns.size()); 297 assertEquals("path/to/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]", ivyPatterns.get(0)); 298 299 DependencyResolver inc = ivy.getResolver("includeworks"); 300 assertNotNull(inc); 301 assertTrue(inc instanceof ChainResolver); 302 chain = (ChainResolver)inc; 303 subresolvers = chain.getResolvers(); 304 assertNotNull(subresolvers); 305 assertEquals(2, subresolvers.size()); 306 307 fsInt1 = (FileSystemResolver)subresolvers.get(0); 308 assertEquals("includeworks-fs1", fsInt1.getName()); 309 310 ivyPatterns = fsInt1.getIvyPatterns(); 311 assertNotNull(ivyPatterns); 312 assertEquals(1, ivyPatterns.size()); 313 assertEquals("included/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]", ivyPatterns.get(0)); 314 } 315 316 public void testParser() throws Exception { 317 Ivy ivy = new Ivy(); 318 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 319 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-parser.xml")); 320 assertEquals("fr.jayasoft.ivy.parser.ModuleDescriptorParserRegistryTest$MyParser", ModuleDescriptorParserRegistry.getInstance().getParsers()[0].getClass().getName()); 321 } 322 323 public void testOutputter() throws Exception { 324 Ivy ivy = new Ivy(); 325 XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy); 326 parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-outputter.xml")); 327 328 330 ReportOutputter testOutputter = ivy.getReportOutputter("test"); 331 assertNotNull(testOutputter); 332 assertTrue(testOutputter instanceof MyOutputter); 333 } 334 335 private void configureURLHandler() { 336 URLHandlerDispatcher dispatcher = new URLHandlerDispatcher(); 337 URLHandler httpHandler = URLHandlerRegistry.getHttp(); 338 dispatcher.setDownloader("http", httpHandler); 339 dispatcher.setDownloader("https", httpHandler); 340 URLHandlerRegistry.setDefault(dispatcher); 341 } 342 343 public static class MyOutputter implements ReportOutputter { 344 345 public void output(ResolveReport report, File destDir) { 346 } 347 348 public String getName() { 349 return "test"; 350 } 351 352 } 353 } 354 | Popular Tags |