| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| package org.apache.ivy.ant; |
| |
| import java.io.BufferedReader; |
| import java.io.File; |
| import java.io.FileReader; |
| import java.io.IOException; |
| import java.io.InputStreamReader; |
| import java.text.ParseException; |
| import java.util.Arrays; |
| import java.util.HashMap; |
| import java.util.HashSet; |
| import java.util.Map; |
| |
| import org.apache.ivy.TestHelper; |
| import org.apache.ivy.core.module.descriptor.DependencyDescriptor; |
| import org.apache.ivy.core.module.descriptor.ModuleDescriptor; |
| import org.apache.ivy.core.module.id.ModuleRevisionId; |
| import org.apache.ivy.core.settings.IvySettings; |
| import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser; |
| import org.apache.ivy.util.FileUtil; |
| import org.apache.tools.ant.Project; |
| import org.apache.tools.ant.taskdefs.Delete; |
| |
| import junit.framework.TestCase; |
| |
| public class IvyDeliverTest extends TestCase { |
| |
| private IvyDeliver deliver; |
| |
| private Project project; |
| |
| protected void setUp() throws Exception { |
| cleanTestDir(); |
| cleanRetrieveDir(); |
| cleanRep(); |
| TestHelper.createCache(); |
| project = TestHelper.newProject(); |
| project.init(); |
| project.setProperty("ivy.settings.file", "test/repositories/ivysettings.xml"); |
| project.setProperty("build", "build/test/deliver"); |
| |
| deliver = new IvyDeliver(); |
| deliver.setProject(project); |
| System.setProperty("ivy.cache.dir", TestHelper.cache.getAbsolutePath()); |
| } |
| |
| protected void tearDown() throws Exception { |
| TestHelper.cleanCache(); |
| cleanTestDir(); |
| cleanRetrieveDir(); |
| cleanRep(); |
| } |
| |
| private void cleanTestDir() { |
| Delete del = new Delete(); |
| del.setProject(new Project()); |
| del.setDir(new File("build/test/deliver")); |
| del.execute(); |
| } |
| |
| private void cleanRetrieveDir() { |
| Delete del = new Delete(); |
| del.setProject(new Project()); |
| del.setDir(new File("build/test/retrieve")); |
| del.execute(); |
| } |
| |
| private void cleanRep() { |
| Delete del = new Delete(); |
| del.setProject(new Project()); |
| del.setDir(new File("test/repositories/1/apache")); |
| del.execute(); |
| } |
| |
| public void testMergeParent() throws IOException, ParseException { |
| // publish the parent descriptor first, so that it can be found while |
| // we are reading the child descriptor. |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-multiconf.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| IvyPublish pubParent = new IvyPublish(); |
| pubParent.setProject(project); |
| pubParent.setResolver("1"); |
| pubParent.setPubrevision("1.0"); |
| File art = new File("build/test/deliver/resolve-simple-1.0.jar"); |
| FileUtil.copy(new File("test/repositories/1/org1/mod1.1/jars/mod1.1-1.0.jar"), art, null); |
| pubParent.execute(); |
| |
| // resolve and deliver the child descriptor |
| project.setProperty("ivy.dep.file", |
| "test/java/org/apache/ivy/ant/ivy-extends-multiconf.xml"); |
| res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/merge/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have delivered the file to the specified destination |
| File delivered = new File("build/test/deliver/merge/ivy-1.2.xml"); |
| assertTrue(delivered.exists()); |
| |
| // do a text compare, since we want to test comments as well as structure. |
| // we could do a better job of this with xmlunit |
| int lineNo = 1; |
| |
| BufferedReader merged = new BufferedReader(new FileReader(delivered)); |
| BufferedReader expected = new BufferedReader(new InputStreamReader(getClass() |
| .getResourceAsStream("ivy-extends-merged.xml"))); |
| try { |
| for (String mergeLine = merged.readLine(), expectedLine = expected.readLine(); mergeLine != null |
| && expectedLine != null; mergeLine = merged.readLine(), expectedLine = expected |
| .readLine()) { |
| |
| mergeLine = mergeLine.trim(); |
| expectedLine = expectedLine.trim(); |
| |
| if (!mergeLine.startsWith("<info")) { |
| assertEquals("published descriptor matches at line[" + lineNo + "]", |
| expectedLine.trim(), mergeLine.trim()); |
| } |
| |
| ++lineNo; |
| } |
| } finally { |
| merged.close(); |
| expected.close(); |
| } |
| } |
| |
| public void testSimple() throws Exception { |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.2"), |
| dds[0].getDependencyRevisionId()); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "latest.integration"), |
| dds[0].getDynamicConstraintDependencyRevisionId()); |
| } |
| |
| public void testNotGenerateRevConstraint() throws Exception { |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.setGenerateRevConstraint(false); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.2"), |
| dds[0].getDependencyRevisionId()); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.2"), |
| dds[0].getDynamicConstraintDependencyRevisionId()); |
| } |
| |
| public void testWithResolveId() throws Exception { |
| IvyResolve resolve = new IvyResolve(); |
| resolve.setProject(project); |
| resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-simple.xml")); |
| resolve.setResolveId("withResolveId"); |
| resolve.execute(); |
| |
| // resolve another ivy file |
| resolve = new IvyResolve(); |
| resolve.setProject(project); |
| resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-latest.xml")); |
| resolve.execute(); |
| |
| deliver.setResolveId("withResolveId"); |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-simple", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.0"), |
| dds[0].getDependencyRevisionId()); |
| } |
| |
| public void testWithResolveIdInAnotherBuild() throws Exception { |
| // create a new build |
| Project other = TestHelper.newProject(); |
| other.setProperty("ivy.settings.file", "test/repositories/ivysettings.xml"); |
| other.setProperty("build", "build/test/deliver"); |
| |
| // do a resolve in the new build |
| IvyResolve resolve = new IvyResolve(); |
| resolve.setProject(other); |
| resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-simple.xml")); |
| resolve.setResolveId("withResolveId"); |
| resolve.execute(); |
| |
| // resolve another ivy file |
| resolve = new IvyResolve(); |
| resolve.setProject(project); |
| resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-latest.xml")); |
| resolve.execute(); |
| |
| deliver.setResolveId("withResolveId"); |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-simple", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.0"), |
| dds[0].getDependencyRevisionId()); |
| } |
| |
| public void testReplaceBranchInfo() throws Exception { |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setPubbranch("BRANCH1"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "BRANCH1", "1.2"), |
| md.getModuleRevisionId()); |
| } |
| |
| public void testWithBranch() throws Exception { |
| // test case for IVY-404 |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest-branch.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "TRUNK", "2.2"), |
| dds[0].getDependencyRevisionId()); |
| } |
| |
| public void testReplaceBranch() throws Exception { |
| IvyConfigure settings = new IvyConfigure(); |
| settings.setProject(project); |
| settings.execute(); |
| // change the default branch to use |
| IvyAntSettings.getDefaultInstance(settings).getConfiguredIvyInstance(settings) |
| .getSettings().setDefaultBranch("BRANCH1"); |
| |
| // resolve a module dependencies |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| // deliver this module |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering, including setting the branch according to the |
| // configured default |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "BRANCH1", "2.2"), |
| dds[0].getDependencyRevisionId()); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "latest.integration"), |
| dds[0].getDynamicConstraintDependencyRevisionId()); |
| } |
| |
| public void testWithExtraAttributes() throws Exception { |
| // test case for IVY-415 |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest-extra.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setValidate(false); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.setValidate(false); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), false); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| Map extraAtt = new HashMap(); |
| extraAtt.put("myExtraAtt", "myValue"); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.2", extraAtt), |
| dds[0].getDependencyRevisionId()); |
| } |
| |
| public void testWithDynEvicted() throws Exception { |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-dyn-evicted.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setValidate(false); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.setValidate(false); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), false); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(2, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.2"), |
| dds[0].getDependencyRevisionId()); |
| |
| IvyRetrieve ret = new IvyRetrieve(); |
| ret.setProject(project); |
| ret.setPattern("build/test/retrieve/[artifact]-[revision].[ext]"); |
| ret.execute(); |
| |
| File list = new File("build/test/retrieve"); |
| String[] files = list.list(); |
| HashSet actualFileSet = new HashSet(Arrays.asList(files)); |
| HashSet expectedFileSet = new HashSet(); |
| for (int i = 0; i < dds.length; i++) { |
| DependencyDescriptor dd = dds[i]; |
| String name = dd.getDependencyId().getName(); |
| String rev = dd.getDependencyRevisionId().getRevision(); |
| String ext = "jar"; |
| String artifact = name + "-" + rev + "." + ext; |
| expectedFileSet.add(artifact); |
| } |
| assertEquals("Delivered Ivy descriptor inconsistent with retrieved artifacts", |
| expectedFileSet, actualFileSet); |
| } |
| |
| public void testWithDynEvicted2() throws Exception { |
| // same as previous but dynamic dependency is placed after the one causing the conflict |
| // test case for IVY-707 |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-dyn-evicted2.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setValidate(false); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.setValidate(false); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), false); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(2, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.2"), |
| dds[1].getDependencyRevisionId()); |
| |
| IvyRetrieve ret = new IvyRetrieve(); |
| ret.setProject(project); |
| ret.setPattern("build/test/retrieve/[artifact]-[revision].[ext]"); |
| ret.execute(); |
| |
| File list = new File("build/test/retrieve"); |
| String[] files = list.list(); |
| HashSet actualFileSet = new HashSet(Arrays.asList(files)); |
| HashSet expectedFileSet = new HashSet(); |
| for (int i = 0; i < dds.length; i++) { |
| DependencyDescriptor dd = dds[i]; |
| String name = dd.getDependencyId().getName(); |
| String rev = dd.getDependencyRevisionId().getRevision(); |
| String ext = "jar"; |
| String artifact = name + "-" + rev + "." + ext; |
| expectedFileSet.add(artifact); |
| } |
| assertEquals("Delivered Ivy descriptor inconsistent with retrieved artifacts", |
| expectedFileSet, actualFileSet); |
| list.delete(); |
| } |
| |
| public void testReplaceImportedConfigurations() throws Exception { |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-import-confs.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| String deliveredFileContent = FileUtil.readEntirely(new BufferedReader(new FileReader( |
| deliveredIvyFile))); |
| assertTrue("import not replaced: import can still be found in file", |
| deliveredFileContent.indexOf("import") == -1); |
| assertTrue("import not replaced: conf1 cannot be found in file", |
| deliveredFileContent.indexOf("conf1") != -1); |
| } |
| |
| public void testReplaceVariables() throws Exception { |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-with-variables.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| res.getIvyInstance().getSettings().setVariable("myvar", "myvalue"); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| String deliveredFileContent = FileUtil.readEntirely(new BufferedReader(new FileReader( |
| deliveredIvyFile))); |
| assertTrue("variable not replaced: myvar can still be found in file", |
| deliveredFileContent.indexOf("myvar") == -1); |
| assertTrue("variable not replaced: myvalue cannot be found in file", |
| deliveredFileContent.indexOf("myvalue") != -1); |
| } |
| |
| public void testNoReplaceDynamicRev() throws Exception { |
| project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-latest.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.setReplacedynamicrev(false); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "resolve-latest", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(1, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "latest.integration"), |
| dds[0].getDependencyRevisionId()); |
| } |
| |
| public void testDifferentRevisionsForSameModule() throws Exception { |
| project.setProperty("ivy.dep.file", |
| "test/java/org/apache/ivy/ant/ivy-different-revisions.xml"); |
| IvyResolve res = new IvyResolve(); |
| res.setProject(project); |
| res.execute(); |
| |
| deliver.setPubrevision("1.2"); |
| deliver.setDeliverpattern("build/test/deliver/ivy-[revision].xml"); |
| deliver.execute(); |
| |
| // should have done the ivy delivering |
| File deliveredIvyFile = new File("build/test/deliver/ivy-1.2.xml"); |
| assertTrue(deliveredIvyFile.exists()); |
| ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( |
| new IvySettings(), deliveredIvyFile.toURI().toURL(), true); |
| assertEquals(ModuleRevisionId.newInstance("apache", "different-revs", "1.2"), |
| md.getModuleRevisionId()); |
| DependencyDescriptor[] dds = md.getDependencies(); |
| assertEquals(3, dds.length); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "2.0"), |
| dds[0].getDependencyRevisionId()); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.1", "1.0"), |
| dds[1].getDependencyRevisionId()); |
| assertEquals(ModuleRevisionId.newInstance("org1", "mod1.2", "1.1"), |
| dds[2].getDependencyRevisionId()); |
| } |
| } |