You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Maarten Coene (JIRA)" <ji...@apache.org> on 2009/11/03 00:54:59 UTC
[jira] Resolved: (IVY-1115) ResolveEngine.getDependencies does not
work using extra attributes.
[ https://issues.apache.org/jira/browse/IVY-1115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maarten Coene resolved IVY-1115.
--------------------------------
Resolution: Fixed
Fix Version/s: (was: 2.1.0-RC2)
trunk
Assignee: Maarten Coene
I think I was able to fix the problem in SVN trunk (at least the attached junit tests pass now).
Could you please give it a try to see if it works for you?
Maarten
> 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: trunk
>
> 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.