[ https://issues.apache.org/jira/browse/IVY-1115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maarten Coene updated IVY-1115: ------------------------------- Fix Version/s: 2.2.0-RC1 (was: trunk) > ResolveEngine.getDependencies does not work using extra attributes. > ------------------------------------------------------------------- > > Key: IVY-1115 > URL: https://issues.apache.org/jira/browse/IVY-1115 > Project: Ivy > Issue Type: Bug > Components: Core > Affects Versions: 2.1.0-RC2 > Environment: Ivy SVN version 808087 > Apache Ant version 1.7.0 compiled on December 13 2006 > Reporter: Michael Scheetz > Assignee: Maarten Coene > Priority: Minor > Fix For: 2.2.0-RC1 > > Attachments: IVY-1115.tests.svn.patch > > > I wrote these two tests for > 'test/java/org/apache/ivy/core/resolve/ResolveEngineTest.java'. The one > using extra attributes to build a dependency list does not return the > complete set of dependencies. > public void testBuildDependencyList_ExtraAtt() throws Exception { > System.setProperty("ivy.local.default.root", new > File("test/repositories/extra-attributes").getAbsolutePath()); > System.setProperty("ivy.settings.file", > "test/repositories/extra-attributes/ivysettings.xml"); > String org = "apache"; > String mod = "mymodule"; > String rev = "1749"; > Map extraAttributes = new HashMap(); > extraAttributes.put("eatt", "task2"); > extraAttributes.put("eatt2", "test"); > > ResolveEngine engine = new ResolveEngine(ivy.getSettings(), > ivy.getEventManager(), ivy.getSortEngine()); > ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev, > extraAttributes); > DefaultModuleDescriptor md = > DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, > false); > String resolveId = ResolveOptions.getDefaultResolveId(md); > ResolveOptions options = new ResolveOptions(); > options.setConfs(new String[] {"*"}); > options.setResolveId(resolveId); > ResolveReport report = new ResolveReport(md, options.getResolveId()); > IvyNode[] deps = engine.getDependencies(md, options, report); > assertEquals(2, deps.length); > assertTrue(Arrays.toString(deps).contains("apache#mymodule;1749")); > assertTrue(Arrays.toString(deps).contains("apache#module2;1976")); > } > > public void testBuildDependencyList_MultiDeps() throws Exception { > System.setProperty("ivy.local.default.root", new > File("test/repositories/1").getAbsolutePath()); > System.setProperty("ivy.settings.file", > "test/repositories/ivysettings-1.xml"); > String org = "org2"; > String mod = "mod2.3"; > String rev = "0.4"; > ResolveEngine engine = new ResolveEngine(ivy.getSettings(), > ivy.getEventManager(), ivy.getSortEngine()); > ModuleRevisionId mRevId = ModuleRevisionId.newInstance(org, mod, rev); > DefaultModuleDescriptor md = > DefaultModuleDescriptor.newCallerInstance(mRevId, new String[] {"*"}, true, > false); > String resolveId = ResolveOptions.getDefaultResolveId(md); > ResolveOptions options = new ResolveOptions(); > options.setConfs(new String[] {"*"}); > options.setResolveId(resolveId); > ResolveReport report = new ResolveReport(md, options.getResolveId()); > IvyNode[] deps = engine.getDependencies(md, options, report); > assertEquals(4, deps.length); > } > Update: > There seems to be parsing issue using extra attributes on the artifact, or > perhaps there is a test setup issue. Lookup with only module level extra > attributes seems to work. > java.text.ParseException: [xml parsing: ivy.xml.original:28:60: > cvc-complex-type.3.2.2: Attribute 'platform' is not allowed to appear in > element 'artifact'. in > file:/Project/ivy/test/repositories/extra-attributes/cache/apache/mymodule/task2/1749/ivy.xml.original > , xml parsing: ivy.xml.original:29:58: cvc-complex-type.3.2.2: Attribute > 'platform' is not allowed to appear in element 'artifact'. in > file:/Project/ivy/test/repositories/extra-attributes/cache/apache/mymodule/task2/1749/ivy.xml.original > ] > at > org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractParser.checkErrors(AbstractModuleDescriptorParser.java:89) > at > org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractParser.getModuleDescriptor(AbstractModuleDescriptorParser.java:342) > at > org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser.parseDescriptor(XmlModuleDescriptorParser.java:103) > at > org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser.parseDescriptor(AbstractModuleDescriptorParser.java:48) > at > org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:638) > at > org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68) > at > org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:655) > at > org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:942) > at > org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:542) > at > org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:263) > at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:170) > at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:274) > at > org.apache.ivy.core.resolve.VisitNodeTest.testLoadData_ExtraAtt_artifact(VisitNodeTest.java:84) > I don't have a test for it, yet, but I think > ... > ModuleRevisionId[] mridArr = ... > DefaultModuleDescriptor md = > DefaultModuleDescriptor.newCallerInstance(mridArr, true, true); > IvyNode[] deps = engine.getDependencies(md, options, report); > ... > Is not transitive in that it only returns the immediate dependencies for the > mridArr objects but not the rest of the dependencies. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.