blob: 2cf0ae1ada02450204b15cd7fbe7266c4f6da6cd [file] [log] [blame]
/*
* 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.core.settings;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import org.apache.ivy.core.cache.DefaultRepositoryCacheManager;
import org.apache.ivy.core.cache.ResolutionCacheManager;
import org.apache.ivy.core.module.descriptor.Artifact;
import org.apache.ivy.core.module.id.ModuleId;
import org.apache.ivy.core.module.id.ModuleRevisionId;
import org.apache.ivy.core.report.ResolveReport;
import org.apache.ivy.core.resolve.ResolveOptions;
import org.apache.ivy.plugins.latest.LatestRevisionStrategy;
import org.apache.ivy.plugins.latest.LatestStrategy;
import org.apache.ivy.plugins.latest.LatestTimeStrategy;
import org.apache.ivy.plugins.lock.AbstractLockStrategy;
import org.apache.ivy.plugins.lock.LockStrategy;
import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry;
import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistryTest;
import org.apache.ivy.plugins.report.ReportOutputter;
import org.apache.ivy.plugins.resolver.ChainResolver;
import org.apache.ivy.plugins.resolver.DependencyResolver;
import org.apache.ivy.plugins.resolver.FileSystemResolver;
import org.apache.ivy.plugins.resolver.IBiblioResolver;
import org.apache.ivy.plugins.resolver.MockResolver;
import org.apache.ivy.plugins.resolver.packager.PackagerResolver;
import org.apache.ivy.plugins.version.ChainVersionMatcher;
import org.apache.ivy.plugins.version.MockVersionMatcher;
import org.apache.ivy.plugins.version.VersionMatcher;
import junit.framework.TestCase;
/**
* TODO write javadoc
*/
public class XmlSettingsParserTest extends TestCase {
public void test() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-test.xml"));
File defaultCache = settings.getDefaultCache();
assertNotNull(defaultCache);
assertEquals("mycache", defaultCache.getName());
assertFalse(settings.isCheckUpToDate());
assertFalse(settings.doValidate());
assertEquals("[module]/ivys/ivy-[revision].xml", settings.getDefaultCacheIvyPattern());
assertEquals("[module]/[type]s/[artifact]-[revision].[ext]",
settings.getDefaultCacheArtifactPattern());
LatestStrategy latest = settings.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 = settings.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());
assertLocationEquals("lib/[organisation]/[module]/ivys/ivy-[revision].xml",
ivyPatterns.get(0));
LatestStrategy strategy = fsres.getLatestStrategy();
assertNotNull(strategy);
assertTrue(strategy instanceof LatestRevisionStrategy);
DependencyResolver internal = settings.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());
assertLocationEquals("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",
settings.getResolver(ModuleRevisionId.newInstance("unknown", "lib", "1.0")).getName());
assertEquals("internal",
settings.getResolver(ModuleRevisionId.newInstance("apache", "ant", "1.0")).getName());
assertEquals("int2",
settings.getResolver(ModuleRevisionId.newInstance("apache", "ivy", "2.0")).getName());
assertEquals("int1",
settings.getResolver(ModuleRevisionId.newInstance("apache", "ivy", "1.0")).getName());
assertEquals("int1",
settings.getResolver(ModuleRevisionId.newInstance("apache", "ivyde", "1.0")).getName());
}
public void testTypedef() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-typedef.xml"));
DependencyResolver mock = settings.getResolver("mock3");
assertNotNull(mock);
assertTrue(mock instanceof MockResolver);
DependencyResolver internal = settings.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 {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-status.xml"));
assertEquals("bronze", settings.getStatusManager().getDefaultStatus());
assertEquals(0, settings.getStatusManager().getPriority("gold"));
assertEquals(1, settings.getStatusManager().getPriority("silver"));
assertEquals(2, settings.getStatusManager().getPriority("bronze"));
assertEquals(false, settings.getStatusManager().isIntegration("gold"));
assertEquals(false, settings.getStatusManager().isIntegration("silver"));
assertEquals(true, settings.getStatusManager().isIntegration("bronze"));
}
public void testConflictManager() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-conflict-manager.xml"));
assertEquals("latest-time", settings.getConflictManager(new ModuleId("apache", "ivyde"))
.getName());
assertEquals("all", settings.getConflictManager(new ModuleId("apache", "ant")).getName());
}
public void testResolveMode() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-resolveMode.xml"));
assertEquals("dynamic", settings.getDefaultResolveMode());
assertEquals("dynamic", settings.getResolveMode(new ModuleId("foo", "bar")));
assertEquals("dynamic", settings.getResolveMode(new ModuleId("apache", "ivyde")));
assertEquals("default", settings.getResolveMode(new ModuleId("apache", "ant")));
}
public void testExtraModuleAttribute() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class
.getResource("ivysettings-extra-module-attribute.xml"));
assertEquals("default", settings.getResolveMode(new ModuleId("apache", "ivy")));
}
public void testCache() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-cache.xml"));
assertEquals(new File("repository").getCanonicalFile(), settings
.getDefaultRepositoryCacheBasedir().getCanonicalFile());
assertEquals(new File("resolution").getCanonicalFile(), settings
.getDefaultResolutionCacheBasedir().getCanonicalFile());
assertEquals("artifact-lock", settings.getDefaultLockStrategy().getName());
assertEquals("[module]/ivys/ivy-[revision].xml", settings.getDefaultCacheIvyPattern());
assertEquals("[module]/[type]s/[artifact]-[revision].[ext]",
settings.getDefaultCacheArtifactPattern());
assertEquals(true, settings.isDefaultUseOrigin());
DefaultRepositoryCacheManager c = (DefaultRepositoryCacheManager) settings
.getRepositoryCacheManager("mycache");
assertNotNull(c);
assertEquals("mycache", c.getName());
assertEquals(1000, c.getDefaultTTL());
assertEquals(200,
c.getTTL(ModuleRevisionId.newInstance("apache", "ivy", "latest.integration")));
assertEquals(10 * 60 * 1000 + 20 * 1000, // 10m 20s
c.getTTL(ModuleRevisionId.newInstance("org1", "A", "A")));
assertEquals(5 * 3600 * 1000, // 5h
c.getTTL(ModuleRevisionId.newInstance("org2", "A", "A")));
assertEquals(60 * 3600 * 1000, // 2d 12h = 60h
c.getTTL(ModuleRevisionId.newInstance("org3", "A", "A")));
assertEquals(new File("mycache").getCanonicalFile(), c.getBasedir().getCanonicalFile());
assertEquals(false, c.isUseOrigin());
assertEquals("no-lock", c.getLockStrategy().getName());
assertEquals("[module]/ivy-[revision].xml", c.getIvyPattern());
assertEquals("[module]/[artifact]-[revision].[ext]", c.getArtifactPattern());
DefaultRepositoryCacheManager c2 = (DefaultRepositoryCacheManager) settings
.getRepositoryCacheManager("mycache2");
assertNotNull(c2);
assertEquals("mycache2", c2.getName());
assertEquals(new File("repository").getCanonicalFile(), c2.getBasedir().getCanonicalFile());
assertEquals("artifact-lock", c2.getLockStrategy().getName());
assertEquals("[module]/ivys/ivy-[revision].xml", c2.getIvyPattern());
assertEquals("[module]/[type]s/[artifact]-[revision].[ext]", c2.getArtifactPattern());
assertEquals(true, c2.isUseOrigin());
assertEquals(c2, settings.getResolver("A").getRepositoryCacheManager());
assertEquals(c, settings.getResolver("B").getRepositoryCacheManager());
}
public void testInvalidCache() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
try {
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-cache-invalid.xml"));
fail("resolver referencing a non existent cache should raise an exception");
} catch (ParseException e) {
assertTrue(e.getMessage().indexOf("mycache") != -1);
}
}
public void testVersionMatchers1() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-vmatcher1.xml"));
VersionMatcher mock = settings.getVersionMatcher("vmock");
assertNotNull(mock);
assertTrue(mock instanceof MockVersionMatcher);
VersionMatcher v = settings.getVersionMatcher();
assertTrue(v instanceof ChainVersionMatcher);
ChainVersionMatcher chain = (ChainVersionMatcher) v;
assertEquals(3, chain.getMatchers().size());
assertTrue(chain.getMatchers().contains(mock));
assertTrue(chain.getMatchers().contains(settings.getVersionMatcher("exact")));
assertTrue(chain.getMatchers().contains(settings.getVersionMatcher("latest")));
}
public void testVersionMatchers2() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-vmatcher2.xml"));
VersionMatcher mock = settings.getVersionMatcher("vmock");
assertNotNull(mock);
assertTrue(mock instanceof MockVersionMatcher);
VersionMatcher v = settings.getVersionMatcher();
assertTrue(v instanceof ChainVersionMatcher);
ChainVersionMatcher chain = (ChainVersionMatcher) v;
assertEquals(5, chain.getMatchers().size());
assertTrue(chain.getMatchers().contains(mock));
}
public void testRef() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-ref.xml"));
DependencyResolver internal = settings.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());
assertLocationEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml",
ivyPatterns.get(0));
DependencyResolver external = settings.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());
assertLocationEquals("sharedrep/[organisation]/[module]/ivys/ivy-[revision].xml",
ivyPatterns.get(0));
}
public void testMacro() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-macro.xml"));
DependencyResolver def = settings.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());
assertLocationEquals(
"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());
assertLocationEquals(
"path/to/secondrep/[organisation]/[module]/[type]s/ivy-[revision].xml",
ivyPatterns.get(0));
DependencyResolver other = settings.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());
assertLocationEquals("path/to/secondrep/[module]/[type]s/ivy-[revision].xml",
ivyPatterns.get(0));
}
public void testMacroAndRef() throws Exception {
// test case for IVY-319
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-macro+ref.xml"));
DependencyResolver shared = settings.getResolver("shared");
assertNotNull(shared);
assertTrue(shared instanceof FileSystemResolver);
DependencyResolver mychain = settings.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 testMacroAndRef2() throws Exception {
// test case for IVY-860
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-macro+ref2.xml"));
DependencyResolver macrores = settings.getResolver("macroresolver");
assertNotNull(macrores);
assertTrue(macrores instanceof ChainResolver);
DependencyResolver testResolver = settings.getResolver("test");
assertNotNull(testResolver);
assertTrue(testResolver instanceof IBiblioResolver);
ChainResolver chain = (ChainResolver) macrores;
List subresolvers = chain.getResolvers();
assertNotNull(subresolvers);
assertEquals(1, subresolvers.size());
assertEquals(testResolver, subresolvers.get(0));
}
public void testPropertiesMissingFile() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class
.getResource("ivysettings-properties-missing-file.xml"));
// no error must have been thrown, check that the parsing didn't stop...
DependencyResolver defaultResolver = settings.getDefaultResolver();
assertNotNull(defaultResolver);
assertEquals("libraries", defaultResolver.getName());
}
public void testInclude() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-include.xml"));
DependencyResolver def = settings.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());
assertLocationEquals(
"path/to/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]",
ivyPatterns.get(0));
DependencyResolver inc = settings.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());
assertLocationEquals(
"included/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]",
ivyPatterns.get(0));
// properties defined in included file should be available to including file (IVY-780)
assertEquals("myvalue", settings.getVariable("ivy.test.prop"));
}
public void testIncludeAbsoluteFile() throws Exception {
// WARNING : this test will only work if the test are launched from the project root
// directory
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class
.getResource("ivysettings-include-absolute-file.xml"));
DependencyResolver inc = settings.getResolver("includeworks");
assertNotNull(inc);
assertTrue(inc instanceof ChainResolver);
}
public void testIncludeMissingFile() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
try {
parser.parse(XmlSettingsParserTest.class
.getResource("ivysettings-include-missing-file.xml"));
fail("An exception must be throwed");
} catch (Exception e) {
// An exception must be throwed
}
}
public void testIncludeSpecialCharInName() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-include-special.xml"));
DependencyResolver def = settings.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());
assertLocationEquals(
"path/to/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]",
ivyPatterns.get(0));
DependencyResolver inc = settings.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());
assertLocationEquals(
"included/myrep/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]",
ivyPatterns.get(0));
// properties defined in included file should be available to including file (IVY-780)
assertEquals("myvalue", settings.getVariable("ivy.test.prop"));
}
public void testRelativePropertiesFile() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParser.class
.getResource("ivyconf-properties-relative-to-ivyconf.xml"));
assertLocationEquals("lib", settings.getVariable("libraries.dir"));
}
public void testParser() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-parser.xml"));
assertEquals(ModuleDescriptorParserRegistryTest.MyParser.class.getName(),
ModuleDescriptorParserRegistry.getInstance().getParsers()[0].getClass().getName());
}
public void testOutputter() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-outputter.xml"));
// System.out.println(Arrays.asList(ivy.getReportOutputters()));
ReportOutputter testOutputter = settings.getReportOutputter("test");
assertNotNull(testOutputter);
assertTrue(testOutputter instanceof MyOutputter);
}
public void testLockingStrategies() throws Exception {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-lock-strategies.xml"));
LockStrategy lockStrategy = settings.getLockStrategy("test");
assertNotNull(lockStrategy);
assertTrue(lockStrategy instanceof MyLockStrategy);
}
public void testFileAttribute() throws Exception {
IvySettings settings = new IvySettings();
File basedir = new File("test").getAbsoluteFile();
settings.setBaseDir(basedir);
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-packager.xml"));
DependencyResolver r = settings.getResolver("packager");
assertNotNull(r);
assertTrue(r instanceof PackagerResolver);
PackagerResolver packager = (PackagerResolver) r;
assertEquals(new File(basedir, "packager/build"), packager.getBuildRoot());
assertEquals(new File(basedir, "packager/cache"), packager.getResourceCache());
}
public void testBaseDirVariables() throws Exception {
IvySettings settings = new IvySettings();
settings.setBaseDir(new File("test/base/dir"));
assertEquals(new File("test/base/dir").getAbsolutePath(), settings.getVariable("basedir"));
assertEquals(new File("test/base/dir").getAbsolutePath(),
settings.getVariable("ivy.basedir"));
settings = new IvySettings();
settings.setVariable("basedir", new File("other/base/dir").getAbsolutePath());
settings.setBaseDir(new File("test/base/dir"));
assertEquals(new File("other/base/dir").getAbsolutePath(), settings.getVariable("basedir"));
assertEquals(new File("test/base/dir").getAbsolutePath(),
settings.getVariable("ivy.basedir"));
}
public static class MyOutputter implements ReportOutputter {
public void output(ResolveReport report, ResolutionCacheManager cacheMgr,
ResolveOptions options) {
}
public String getName() {
return "test";
}
}
public static class MyLockStrategy extends AbstractLockStrategy {
public boolean lockArtifact(Artifact artifact, File artifactFileToDownload)
throws InterruptedException {
return false;
}
public void unlockArtifact(Artifact artifact, File artifactFileToDownload) {
}
}
private void assertLocationEquals(String expected, Object pattern) throws IOException {
assertEquals(new File(expected).getCanonicalFile(),
new File((String) pattern).getCanonicalFile());
}
}