mirror of https://github.com/apache/ant-ivy
576 lines
24 KiB
Java
576 lines
24 KiB
Java
/*
|
|
* 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 junit.framework.TestCase;
|
|
|
|
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;
|
|
|
|
public class IvyDeliverTest extends TestCase {
|
|
private File cache;
|
|
|
|
private IvyDeliver deliver;
|
|
|
|
private Project project;
|
|
|
|
protected void setUp() throws Exception {
|
|
cleanTestDir();
|
|
cleanRetrieveDir();
|
|
cleanRep();
|
|
createCache();
|
|
project = new Project();
|
|
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", cache.getAbsolutePath());
|
|
}
|
|
|
|
private void createCache() {
|
|
cache = new File("build/cache");
|
|
cache.mkdirs();
|
|
}
|
|
|
|
protected void tearDown() throws Exception {
|
|
cleanCache();
|
|
cleanTestDir();
|
|
cleanRetrieveDir();
|
|
cleanRep();
|
|
}
|
|
|
|
private void cleanCache() {
|
|
Delete del = new Delete();
|
|
del.setProject(new Project());
|
|
del.setDir(cache);
|
|
del.execute();
|
|
}
|
|
|
|
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.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.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.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 = new Project();
|
|
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.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.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.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.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.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.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.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.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.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());
|
|
}
|
|
}
|