| /* |
| * 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()); |
| } |
| } |