blob: cef118a0bfca55435faa7156e5c1f830460f8fe1 [file] [log] [blame]
/*
* This file is subject to the license found in LICENCE.TXT in the root directory of the project.
*
* #SNAPSHOT#
*/
package fr.jayasoft.ivy.xml;
import java.io.File;
import java.net.URL;
import java.util.List;
import junit.framework.TestCase;
import fr.jayasoft.ivy.DependencyResolver;
import fr.jayasoft.ivy.Ivy;
import fr.jayasoft.ivy.LatestStrategy;
import fr.jayasoft.ivy.ModuleId;
import fr.jayasoft.ivy.latest.LatestRevisionStrategy;
import fr.jayasoft.ivy.latest.LatestTimeStrategy;
import fr.jayasoft.ivy.parser.ModuleDescriptorParserRegistry;
import fr.jayasoft.ivy.report.ReportOutputter;
import fr.jayasoft.ivy.report.ResolveReport;
import fr.jayasoft.ivy.resolver.ChainResolver;
import fr.jayasoft.ivy.resolver.FileSystemResolver;
import fr.jayasoft.ivy.resolver.IvyRepResolver;
import fr.jayasoft.ivy.resolver.MockResolver;
import fr.jayasoft.ivy.url.URLHandler;
import fr.jayasoft.ivy.url.URLHandlerDispatcher;
import fr.jayasoft.ivy.url.URLHandlerRegistry;
import fr.jayasoft.ivy.version.ChainVersionMatcher;
import fr.jayasoft.ivy.version.MockVersionMatcher;
import fr.jayasoft.ivy.version.VersionMatcher;
/**
* TODO write javadoc
*/
public class XmlIvyConfigurationParserTest extends TestCase {
public void test() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-test.xml"));
File defaultCache = ivy.getDefaultCache();
assertNotNull(defaultCache);
assertEquals("mycache", defaultCache.getName());
assertFalse(ivy.isCheckUpToDate());
assertFalse(ivy.doValidate());
assertEquals("[module]/ivys/ivy-[revision].xml", ivy.getCacheIvyPattern());
assertEquals("[module]/[type]s/[artifact]-[revision].[ext]", ivy.getCacheArtifactPattern());
LatestStrategy latest = ivy.getLatestStrategy("mylatest-revision");
assertNotNull(latest);
assertTrue(latest instanceof LatestRevisionStrategy);
LatestRevisionStrategy l = (LatestRevisionStrategy)latest;
assertEquals(new Integer(-2), l.getSpecialMeanings().get("pre"));
assertEquals(new Integer(4), l.getSpecialMeanings().get("qa"));
DependencyResolver defaultResolver = ivy.getDefaultResolver();
assertNotNull(defaultResolver);
assertEquals("libraries", defaultResolver.getName());
assertTrue(defaultResolver instanceof FileSystemResolver);
FileSystemResolver fsres = (FileSystemResolver)defaultResolver;
List ivyPatterns = fsres.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("lib/[organisation]/[module]/ivys/ivy-[revision].xml", ivyPatterns.get(0));
LatestStrategy strategy = fsres.getLatestStrategy();
assertNotNull(strategy);
assertTrue(strategy instanceof LatestRevisionStrategy);
DependencyResolver internal = ivy.getResolver("internal");
assertNotNull(internal);
assertTrue(internal instanceof ChainResolver);
ChainResolver chain = (ChainResolver)internal;
List subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(2, subresolvers.size());
FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0);
assertEquals("int1", fsInt1.getName());
assertEquals(1, fsInt1.getIvyPatterns().size());
assertEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml", fsInt1.getIvyPatterns().get(0));
assertEquals("int2", ((DependencyResolver)subresolvers.get(1)).getName());
strategy = fsInt1.getLatestStrategy();
assertNotNull(strategy);
assertTrue(strategy instanceof LatestTimeStrategy);
assertEquals("libraries", ivy.getResolver(new ModuleId("unknown", "lib")).getName());
assertEquals("internal", ivy.getResolver(new ModuleId("jayasoft", "swtbinding")).getName());
assertEquals("int1", ivy.getResolver(new ModuleId("jayasoft", "ivy")).getName());
assertEquals("int1", ivy.getResolver(new ModuleId("jayasoft", "ivycruise")).getName());
}
public void testTypedef() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-typedef.xml"));
DependencyResolver mock = ivy.getResolver("mock3");
assertNotNull(mock);
assertTrue(mock instanceof MockResolver);
DependencyResolver internal = ivy.getResolver("internal");
assertNotNull(internal);
assertTrue(internal instanceof ChainResolver);
ChainResolver chain = (ChainResolver)internal;
List subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(2, subresolvers.size());
assertEquals("mock1", ((DependencyResolver)subresolvers.get(0)).getName());
assertEquals("mock2", ((DependencyResolver)subresolvers.get(1)).getName());
assertTrue(subresolvers.get(0) instanceof MockResolver);
assertTrue(subresolvers.get(1) instanceof MockResolver);
}
public void testStatuses() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-status.xml"));
assertEquals("bronze", ivy.getStatusManager().getDefaultStatus());
assertEquals(0, ivy.getStatusManager().getPriority("gold"));
assertEquals(1, ivy.getStatusManager().getPriority("silver"));
assertEquals(2, ivy.getStatusManager().getPriority("bronze"));
assertEquals(false, ivy.getStatusManager().isIntegration("gold"));
assertEquals(false, ivy.getStatusManager().isIntegration("silver"));
assertEquals(true, ivy.getStatusManager().isIntegration("bronze"));
}
public void testConflictManager() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-conflict-manager.xml"));
assertEquals("latest-time", ivy.getConflictManager(new ModuleId("jayasoft", "ivyde")).getName());
assertEquals("all", ivy.getConflictManager(new ModuleId("jayasoft", "uistate")).getName());
}
public void testVersionMatchers1() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-vmatcher1.xml"));
VersionMatcher mock = ivy.getVersionMatcher("vmock");
assertNotNull(mock);
assertTrue(mock instanceof MockVersionMatcher);
VersionMatcher v = ivy.getVersionMatcher();
assertTrue(v instanceof ChainVersionMatcher);
ChainVersionMatcher chain = (ChainVersionMatcher) v;
assertEquals(3, chain.getMatchers().size());
assertTrue(chain.getMatchers().contains(mock));
assertTrue(chain.getMatchers().contains(ivy.getVersionMatcher("exact")));
assertTrue(chain.getMatchers().contains(ivy.getVersionMatcher("latest")));
}
public void testVersionMatchers2() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-vmatcher2.xml"));
VersionMatcher mock = ivy.getVersionMatcher("vmock");
assertNotNull(mock);
assertTrue(mock instanceof MockVersionMatcher);
VersionMatcher v = ivy.getVersionMatcher();
assertTrue(v instanceof ChainVersionMatcher);
ChainVersionMatcher chain = (ChainVersionMatcher) v;
assertEquals(5, chain.getMatchers().size());
assertTrue(chain.getMatchers().contains(mock));
}
public void testRef() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-ref.xml"));
DependencyResolver internal = ivy.getResolver("internal");
assertNotNull(internal);
assertTrue(internal instanceof ChainResolver);
ChainResolver chain = (ChainResolver)internal;
List subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(2, subresolvers.size());
FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0);
assertEquals("fs", fsInt1.getName());
List ivyPatterns = fsInt1.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml", ivyPatterns.get(0));
DependencyResolver external = ivy.getResolver("external");
assertNotNull(external);
assertTrue(external instanceof ChainResolver);
chain = (ChainResolver)external;
subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(1, subresolvers.size());
FileSystemResolver fsInt2 = (FileSystemResolver)subresolvers.get(0);
assertEquals("fs", fsInt2.getName());
ivyPatterns = fsInt2.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml", ivyPatterns.get(0));
}
public void testMacro() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-macro.xml"));
DependencyResolver def = ivy.getResolver("default");
assertNotNull(def);
assertTrue(def instanceof ChainResolver);
ChainResolver chain = (ChainResolver)def;
List subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(2, subresolvers.size());
FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0);
assertEquals("default-fs1", fsInt1.getName());
List ivyPatterns = fsInt1.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("path/to/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]", ivyPatterns.get(0));
FileSystemResolver fsInt2 = (FileSystemResolver)subresolvers.get(1);
assertEquals("default-fs2", fsInt2.getName());
ivyPatterns = fsInt2.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("path/to/secondrep/[organisation]/[module]/[type]s/ivy-[revision].xml", ivyPatterns.get(0));
DependencyResolver other = ivy.getResolver("other");
assertNotNull(other);
assertTrue(other instanceof ChainResolver);
chain = (ChainResolver)other;
subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(2, subresolvers.size());
fsInt2 = (FileSystemResolver)subresolvers.get(1);
assertEquals("other-fs2", fsInt2.getName());
ivyPatterns = fsInt2.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("path/to/secondrep/[module]/[type]s/ivy-[revision].xml", ivyPatterns.get(0));
}
public void testMacroAndRef() throws Exception {
// test case for IVY-319
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-macro+ref.xml"));
DependencyResolver shared = ivy.getResolver("shared");
assertNotNull(shared);
assertTrue(shared instanceof FileSystemResolver);
DependencyResolver mychain = ivy.getResolver("mychain");
assertNotNull(mychain);
assertTrue(mychain instanceof ChainResolver);
ChainResolver chain = (ChainResolver)mychain;
List subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(1, subresolvers.size());
shared = (DependencyResolver) subresolvers.get(0);
assertEquals("shared", shared.getName());
assertTrue(shared instanceof FileSystemResolver);
}
public void testInclude() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-include.xml"));
DependencyResolver def = ivy.getResolver("default");
assertNotNull(def);
assertTrue(def instanceof ChainResolver);
ChainResolver chain = (ChainResolver)def;
List subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(2, subresolvers.size());
FileSystemResolver fsInt1 = (FileSystemResolver)subresolvers.get(0);
assertEquals("default-fs1", fsInt1.getName());
List ivyPatterns = fsInt1.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("path/to/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]", ivyPatterns.get(0));
DependencyResolver inc = ivy.getResolver("includeworks");
assertNotNull(inc);
assertTrue(inc instanceof ChainResolver);
chain = (ChainResolver)inc;
subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(2, subresolvers.size());
fsInt1 = (FileSystemResolver)subresolvers.get(0);
assertEquals("includeworks-fs1", fsInt1.getName());
ivyPatterns = fsInt1.getIvyPatterns();
assertNotNull(ivyPatterns);
assertEquals(1, ivyPatterns.size());
assertEquals("included/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]", ivyPatterns.get(0));
}
public void testParser() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-parser.xml"));
assertEquals("fr.jayasoft.ivy.parser.ModuleDescriptorParserRegistryTest$MyParser", ModuleDescriptorParserRegistry.getInstance().getParsers()[0].getClass().getName());
}
public void testOutputter() throws Exception {
Ivy ivy = new Ivy();
XmlIvyConfigurationParser parser = new XmlIvyConfigurationParser(ivy);
parser.parse(XmlIvyConfigurationParserTest.class.getResource("ivyconf-outputter.xml"));
//System.out.println(Arrays.asList(ivy.getReportOutputters()));
ReportOutputter testOutputter = ivy.getReportOutputter("test");
assertNotNull(testOutputter);
assertTrue(testOutputter instanceof MyOutputter);
}
private void configureURLHandler() {
URLHandlerDispatcher dispatcher = new URLHandlerDispatcher();
URLHandler httpHandler = URLHandlerRegistry.getHttp();
dispatcher.setDownloader("http", httpHandler);
dispatcher.setDownloader("https", httpHandler);
URLHandlerRegistry.setDefault(dispatcher);
}
public static class MyOutputter implements ReportOutputter {
public void output(ResolveReport report, File destDir) {
}
public String getName() {
return "test";
}
}
}