ant-ivy/test/java/fr/jayasoft/ivy/xml/XmlModuleDescriptorParserTe...

537 lines
32 KiB
Java

/*
* 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.IOException;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import fr.jayasoft.ivy.Artifact;
import fr.jayasoft.ivy.Configuration;
import fr.jayasoft.ivy.ConflictManager;
import fr.jayasoft.ivy.DependencyDescriptor;
import fr.jayasoft.ivy.Ivy;
import fr.jayasoft.ivy.License;
import fr.jayasoft.ivy.ModuleDescriptor;
import fr.jayasoft.ivy.ModuleId;
import fr.jayasoft.ivy.Configuration.Visibility;
import fr.jayasoft.ivy.conflict.FixedConflictManager;
import fr.jayasoft.ivy.conflict.NoConflictManager;
import fr.jayasoft.ivy.matcher.PatternMatcher;
import fr.jayasoft.ivy.parser.AbstractModuleDescriptorParserTester;
import fr.jayasoft.ivy.util.XMLHelper;
/**
*
*/
public class XmlModuleDescriptorParserTest extends AbstractModuleDescriptorParserTester {
// junit test -- DO NOT REMOVE used by ant to know it's a junit test
private Ivy _ivy = new Ivy();
public void testSimple() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-simple.xml"), true);
assertNotNull(md);
assertEquals("myorg", md.getModuleRevisionId().getOrganisation());
assertEquals("mymodule", md.getModuleRevisionId().getName());
assertEquals(null, md.getModuleRevisionId().getRevision());
assertEquals("integration", md.getStatus());
assertNotNull(md.getConfigurations());
assertEquals(Arrays.asList(new Configuration[] {new Configuration("default")}), Arrays.asList(md.getConfigurations()));
assertNotNull(md.getArtifacts("default"));
assertEquals(1, md.getArtifacts("default").length);
assertEquals("mymodule", md.getArtifacts("default")[0].getName());
assertEquals("jar", md.getArtifacts("default")[0].getType());
assertNotNull(md.getDependencies());
assertEquals(0, md.getDependencies().length);
}
public void testBad() throws IOException {
try {
XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-bad.xml"), true);
fail("bad ivy file raised no error");
} catch (ParseException ex) {
// ok
}
}
public void testBadOrg() throws IOException {
try {
XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-bad-org.xml"), true);
fail("bad ivy file raised no error");
} catch (ParseException ex) {
if (XMLHelper.canUseSchemaValidation()) {
assertTrue("invalid exception: "+ex.getMessage(), ex.getMessage().indexOf("organization") != -1);
}
}
}
public void testBadConfs() throws IOException {
try {
XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-bad-confs.xml"), true);
fail("bad ivy file raised no error");
} catch (ParseException ex) {
assertTrue("invalid exception: "+ex.getMessage(), ex.getMessage().indexOf("invalidConf") != -1);
}
}
public void testNoValidate() throws IOException, ParseException {
XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-novalidate.xml"), false);
}
public void testBadVersion() throws IOException {
try {
XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-bad-version.xml"), true);
fail("bad version ivy file raised no error");
} catch (ParseException ex) {
// ok
}
}
public void testFull() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test.xml"), true);
assertNotNull(md);
assertEquals("myorg", md.getModuleRevisionId().getOrganisation());
assertEquals("mymodule", md.getModuleRevisionId().getName());
assertEquals("myrev", md.getModuleRevisionId().getRevision());
assertEquals("integration", md.getStatus());
Date pubdate = new GregorianCalendar(2004, 10, 1, 11, 0, 0).getTime();
assertEquals(pubdate, md.getPublicationDate());
License[] licenses = md.getLicenses();
assertEquals(1, licenses.length);
assertEquals("MyLicense", licenses[0].getName());
assertEquals("http://www.my.org/mymodule/mylicense.html", licenses[0].getUrl());
assertEquals("http://www.my.org/mymodule/", md.getHomePage());
Configuration[] confs = md.getConfigurations();
assertNotNull(confs);
assertEquals(5, confs.length);
assertConf(md, "myconf1", "desc 1", Configuration.Visibility.PUBLIC, new String[0]);
assertConf(md, "myconf2", "desc 2", Configuration.Visibility.PUBLIC, new String[0]);
assertConf(md, "myconf3", "desc 3", Configuration.Visibility.PRIVATE, new String[0]);
assertConf(md, "myconf4", "desc 4", Configuration.Visibility.PUBLIC, new String[] {"myconf1", "myconf2"});
assertConf(md, "myoldconf", "my old desc", Configuration.Visibility.PUBLIC, new String[0]);
assertArtifacts(md.getArtifacts("myconf1"), new String[] {"myartifact1", "myartifact2", "myartifact3", "myartifact4"});
assertArtifacts(md.getArtifacts("myconf2"), new String[] {"myartifact1", "myartifact3"});
assertArtifacts(md.getArtifacts("myconf3"), new String[] {"myartifact1", "myartifact3", "myartifact4"});
assertArtifacts(md.getArtifacts("myconf4"), new String[] {"myartifact1"});
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(13, dependencies.length);
// no conf def => equivalent to *->*
DependencyDescriptor dd = getDependency(dependencies, "mymodule2");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("2.0", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
assertFalse(dd.isChanging());
assertTrue(dd.isTransitive());
// changing = true
dd = getDependency(dependencies, "mymodule3");
assertNotNull(dd);
assertTrue(dd.isChanging());
assertFalse(dd.isTransitive());
// conf="myconf1" => equivalent to myconf1->myconf1
dd = getDependency(dependencies, "yourmodule1");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("1.1", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
// conf="myconf1->yourconf1"
dd = getDependency(dependencies, "yourmodule2");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("2+", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
// conf="myconf1->yourconf1, yourconf2"
dd = getDependency(dependencies, "yourmodule3");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("3.1", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf2", "myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
// conf="myconf1, myconf2->yourconf1, yourconf2"
dd = getDependency(dependencies, "yourmodule4");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("4.1", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));
assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
// conf="myconf1->yourconf1;myconf2->yourconf1, yourconf2"
dd = getDependency(dependencies, "yourmodule5");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("5.1", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));
assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
// conf="*->@"
dd = getDependency(dependencies, "yourmodule11");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("11.1", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"*"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertEquals(Arrays.asList(new String[] {"myconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {"myconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));
assertEquals(Arrays.asList(new String[] {"myconf3"}), Arrays.asList(dd.getDependencyConfigurations("myconf3")));
assertEquals(Arrays.asList(new String[] {"myconf4"}), Arrays.asList(dd.getDependencyConfigurations("myconf4")));
dd = getDependency(dependencies, "yourmodule6");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("latest.integration", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));
assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
dd = getDependency(dependencies, "yourmodule7");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("7.1", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertEquals(Arrays.asList(new String[] {"yourconf1"}), Arrays.asList(dd.getDependencyConfigurations("myconf1")));
assertEquals(Arrays.asList(new String[] {"yourconf1", "yourconf2"}), Arrays.asList(dd.getDependencyConfigurations("myconf2")));
assertEquals(Arrays.asList(new String[] {}), Arrays.asList(dd.getDependencyConfigurations(new String[] {"myconf3", "myconf4"})));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1", "myconf2", "myconf3", "myconf4"}, new String[0]);
dd = getDependency(dependencies, "yourmodule8");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("8.1", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"*"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1"}, new String[] {"yourartifact8-1", "yourartifact8-2"});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf2"}, new String[] {"yourartifact8-1", "yourartifact8-2"});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf3"}, new String[] {"yourartifact8-1", "yourartifact8-2"});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf4"}, new String[] {"yourartifact8-1", "yourartifact8-2"});
dd = getDependency(dependencies, "yourmodule9");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("9.1", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"myconf1", "myconf2", "myconf3"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1"}, new String[] {"yourartifact9-1"});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf2"}, new String[] {"yourartifact9-1", "yourartifact9-2"});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf3"}, new String[] {"yourartifact9-2"});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf4"}, new String[] {});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf1"}, new String[] {});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf2"}, new String[] {});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf3"}, new String[] {});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf4"}, new String[] {});
dd = getDependency(dependencies, "yourmodule10");
assertNotNull(dd);
assertEquals("yourorg", dd.getDependencyId().getOrganisation());
assertEquals("10.1", dd.getDependencyRevisionId().getRevision());
assertEquals(new HashSet(Arrays.asList(new String[] {"*"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertDependencyArtifactsIncludes(dd, new String[] {"myconf1"}, new String[] {"your.*", PatternMatcher.ANY_EXPRESSION});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf2"}, new String[] {"your.*", PatternMatcher.ANY_EXPRESSION});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf3"}, new String[] {"your.*", PatternMatcher.ANY_EXPRESSION});
assertDependencyArtifactsIncludes(dd, new String[] {"myconf4"}, new String[] {"your.*", PatternMatcher.ANY_EXPRESSION});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf1"}, new String[] {"toexclude"});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf2"}, new String[] {"toexclude"});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf3"}, new String[] {"toexclude"});
assertDependencyArtifactsExcludes(dd, new String[] {"myconf4"}, new String[] {"toexclude"});
ConflictManager cm = md.getConflictManager(new ModuleId("yourorg", "yourmodule1"));
assertNotNull(cm);
assertTrue(cm instanceof NoConflictManager);
cm = md.getConflictManager(new ModuleId("yourorg", "yourmodule2"));
assertNotNull(cm);
assertTrue(cm instanceof NoConflictManager);
cm = md.getConflictManager(new ModuleId("theirorg", "theirmodule1"));
assertNotNull(cm);
assertTrue(cm instanceof FixedConflictManager);
FixedConflictManager fcm = (FixedConflictManager)cm;
assertEquals(2, fcm.getRevs().size());
assertTrue(fcm.getRevs().contains("1.0"));
assertTrue(fcm.getRevs().contains("1.1"));
cm = md.getConflictManager(new ModuleId("theirorg", "theirmodule2"));
assertNull(cm);
}
public void testBug60() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-bug60.xml"), true);
assertNotNull(md);
assertEquals("myorg", md.getModuleRevisionId().getOrganisation());
assertEquals("mymodule", md.getModuleRevisionId().getName());
assertEquals("myrev", md.getModuleRevisionId().getRevision());
assertEquals("integration", md.getStatus());
Date pubdate = new GregorianCalendar(2004, 10, 1, 11, 0, 0).getTime();
assertEquals(pubdate, md.getPublicationDate());
assertEquals(Arrays.asList(new Configuration[] {new Configuration("default")}), Arrays.asList(md.getConfigurations()));
assertArtifacts(md.getArtifacts("default"), new String[] {"myartifact1", "myartifact2"});
}
public void testNoArtifact() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-noartifact.xml"), true);
assertNotNull(md);
assertEquals("myorg", md.getModuleRevisionId().getOrganisation());
assertEquals("mymodule", md.getModuleRevisionId().getName());
assertEquals(null, md.getModuleRevisionId().getRevision());
assertEquals("integration", md.getStatus());
assertNotNull(md.getConfigurations());
assertEquals(Arrays.asList(new Configuration[] {new Configuration("default")}), Arrays.asList(md.getConfigurations()));
assertNotNull(md.getArtifacts("default"));
assertEquals(0, md.getArtifacts("default").length);
assertNotNull(md.getDependencies());
assertEquals(0, md.getDependencies().length);
}
public void testNoPublication() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-nopublication.xml"), true);
assertNotNull(md);
assertEquals("myorg", md.getModuleRevisionId().getOrganisation());
assertEquals("mymodule", md.getModuleRevisionId().getName());
assertEquals("myrev", md.getModuleRevisionId().getRevision());
assertEquals("integration", md.getStatus());
Date pubdate = new GregorianCalendar(2004, 10, 1, 11, 0, 0).getTime();
assertEquals(pubdate, md.getPublicationDate());
assertNotNull(md.getConfigurations());
assertEquals(Arrays.asList(new Configuration[] {new Configuration("default")}), Arrays.asList(md.getConfigurations()));
assertNotNull(md.getArtifacts("default"));
assertEquals(1, md.getArtifacts("default").length);
assertNotNull(md.getDependencies());
assertEquals(1, md.getDependencies().length);
}
public void testDefaultConf() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-defaultconf.xml"), true);
assertNotNull(md);
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(2, dependencies.length);
// no conf def => defaults to defaultConf: default
DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("1.0", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"default"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"default"}), Arrays.asList(dd.getDependencyConfigurations("default")));
// confs def: *->*
dd = getDependency(dependencies, "mymodule2");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("2.0", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("default")));
}
public void testDefaultConf2() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-defaultconf2.xml"), true);
assertNotNull(md);
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(2, dependencies.length);
// no conf def => defaults to defaultConf: *->default
DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("1.0", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"default"}), Arrays.asList(dd.getDependencyConfigurations("default")));
assertEquals(Arrays.asList(new String[] {"default"}), Arrays.asList(dd.getDependencyConfigurations("test")));
// confs def: test: should not use default conf for the right side (use of defaultconfmapping is required for that) => test->test
dd = getDependency(dependencies, "mymodule2");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("2.0", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"test"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"test"}), Arrays.asList(dd.getDependencyConfigurations("test")));
}
public void testDefaultConfMapping() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-defaultconfmapping.xml"), true);
assertNotNull(md);
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(2, dependencies.length);
// no conf def => defaults to defaultConf: *->default
DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("1.0", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"default"}), Arrays.asList(dd.getDependencyConfigurations("default")));
assertEquals(Arrays.asList(new String[] {"default"}), Arrays.asList(dd.getDependencyConfigurations("test")));
// confs def: test: should use default conf mapping for the right side => test->default
dd = getDependency(dependencies, "mymodule2");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("2.0", dd.getDependencyRevisionId().getRevision());
assertEquals(Arrays.asList(new String[] {"test"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"default"}), Arrays.asList(dd.getDependencyConfigurations("test")));
}
public void testExtraAttributes() throws Exception {
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-extra-attributes.xml"), false);
assertNotNull(md);
assertEquals("infoextravalue", md.getAttribute("infoextra"));
assertEquals("infoextravalue", md.getModuleRevisionId().getAttribute("infoextra"));
assertEquals("confextravalue", md.getConfiguration("default").getAttribute("confextra"));
Artifact[] artifacts = md.getArtifacts("default");
assertEquals(1, artifacts.length);
Artifact art = artifacts[0];
assertEquals("art1", art.getName());
assertEquals("artextravalue", art.getAttribute("artextra"));
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(1, dependencies.length);
DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
assertNotNull(dd);
assertEquals("myorg", dd.getDependencyId().getOrganisation());
assertEquals("1.0", dd.getDependencyRevisionId().getRevision());
assertEquals("depextravalue", dd.getAttribute("depextra"));
assertEquals("depextravalue", dd.getDependencyRevisionId().getAttribute("depextra"));
}
public void testImportConfigurations1() throws Exception {
// import configurations
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-configurations-import1.xml"), true);
assertNotNull(md);
// should have imported configurations
assertNotNull(md.getConfigurations());
assertEquals(Arrays.asList(new Configuration[] {
new Configuration("conf1", Visibility.PUBLIC, "", new String[0]),
new Configuration("conf2", Visibility.PRIVATE, "", new String[0])
}), Arrays.asList(md.getConfigurations()));
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(2, dependencies.length);
// no conf def => defaults to defaultConf: *->*
DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("conf1")));
// confs def: conf1->*
dd = getDependency(dependencies, "mymodule2");
assertEquals(Arrays.asList(new String[] {"conf1"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("conf1")));
}
public void testImportConfigurations2() throws Exception {
// import configurations and add another one
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-configurations-import2.xml"), true);
assertNotNull(md);
// should have imported configurations and added the one defined in the file itself
assertNotNull(md.getConfigurations());
assertEquals(Arrays.asList(new Configuration[] {
new Configuration("conf1", Visibility.PUBLIC, "", new String[0]),
new Configuration("conf2", Visibility.PRIVATE, "", new String[0]),
new Configuration("conf3", Visibility.PUBLIC, "", new String[0])
}), Arrays.asList(md.getConfigurations()));
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(2, dependencies.length);
// no conf def => defaults to defaultConf: *->*
DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("conf1")));
// confs def: conf2,conf3->*
dd = getDependency(dependencies, "mymodule2");
assertEquals(new HashSet(Arrays.asList(new String[] {"conf2", "conf3"})), new HashSet(Arrays.asList(dd.getModuleConfigurations())));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("conf2")));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("conf3")));
}
public void testImportConfigurations3() throws Exception {
// import configurations and default mapping
ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_ivy, getClass().getResource("test-configurations-import3.xml"), true);
assertNotNull(md);
// should have imported configurations
assertNotNull(md.getConfigurations());
assertEquals(Arrays.asList(new Configuration[] {
new Configuration("conf1", Visibility.PUBLIC, "", new String[0]),
new Configuration("conf2", Visibility.PRIVATE, "", new String[0])
}), Arrays.asList(md.getConfigurations()));
DependencyDescriptor[] dependencies = md.getDependencies();
assertNotNull(dependencies);
assertEquals(2, dependencies.length);
// no conf def => defaults to defaultConf defined in imported file: *->@
DependencyDescriptor dd = getDependency(dependencies, "mymodule1");
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"conf1"}), Arrays.asList(dd.getDependencyConfigurations("conf1")));
assertEquals(Arrays.asList(new String[] {"conf2"}), Arrays.asList(dd.getDependencyConfigurations("conf2")));
// confs def: conf1->*
dd = getDependency(dependencies, "mymodule2");
assertEquals(Arrays.asList(new String[] {"conf1"}), Arrays.asList(dd.getModuleConfigurations()));
assertEquals(Arrays.asList(new String[] {"*"}), Arrays.asList(dd.getDependencyConfigurations("conf1")));
}
}