To keep a more consistent naming, I would prefer to use "haltonfailure" instead of "haltonunresolved"
regards, Maarten ----- Original Message ---- From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Sent: Tuesday, April 24, 2007 7:53:21 PM Subject: svn commit: r532027 - in /incubator/ivy/core/trunk: CHANGES.txt doc/doc/use/install.html src/java/org/apache/ivy/ant/IvyInstall.java test/java/org/apache/ivy/ant/IvyInstallTest.java Author: xavier Date: Tue Apr 24 10:53:20 2007 New Revision: 532027 URL: http://svn.apache.org/viewvc?view=rev&rev=532027 Log: BUG: ivy:install ant task does not fail on error (IVY-475) (thanks to Jeffrey Blatttman) Added: incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstallTest.java Modified: incubator/ivy/core/trunk/CHANGES.txt incubator/ivy/core/trunk/doc/doc/use/install.html incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java Modified: incubator/ivy/core/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/CHANGES.txt?view=diff&rev=532027&r1=532026&r2=532027 ============================================================================== --- incubator/ivy/core/trunk/CHANGES.txt (original) +++ incubator/ivy/core/trunk/CHANGES.txt Tue Apr 24 10:53:20 2007 @@ -13,6 +13,7 @@ Ingo Adler Stephane Baillez Karl Baum + Jeffrey Blatttman Matthieu Brouillard Kristian Cibulskis Pierre Hägnestrand @@ -43,6 +44,9 @@ Johan Stuyts John Williams + version in SVN +===================================== +- BUG: ivy:install ant task does not fail on error (IVY-475) (thanks to Jeffrey Blatttman) 2.0.0-alpha1-incubating ===================================== Modified: incubator/ivy/core/trunk/doc/doc/use/install.html URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/doc/use/install.html?view=diff&rev=532027&r1=532026&r2=532027 ============================================================================== --- incubator/ivy/core/trunk/doc/doc/use/install.html (original) +++ incubator/ivy/core/trunk/doc/doc/use/install.html Tue Apr 24 10:53:20 2007 @@ -56,6 +56,8 @@ <td>No, defaults to false</td></tr> <tr><td>matcher</td><td>the name of the matcher to use to find the modules to install</td> <td>No, defaults to exact</td></tr> + <tr><td>haltonunresolved</td><td>true to fail build on unresolved dependencies <span class="since">since 2.0</span></td> + <td>No, defaults to true</td></tr> </tbody> </table> <h1>Examples</h1> Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java?view=diff&rev=532027&r1=532026&r2=532027 ============================================================================== --- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java (original) +++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java Tue Apr 24 10:53:20 2007 @@ -25,12 +25,13 @@ import org.apache.ivy.plugins.matcher.PatternMatcher; import org.apache.ivy.util.filter.FilterHelper; import org.apache.tools.ant.BuildException; - +import org.apache.ivy.core.report.ResolveReport; +import org.apache.tools.ant.BuildException; /** * Allow to install a module or a set of module from repository to another one. - * - * + * + * * @author Xavier Hanin * */ @@ -38,13 +39,14 @@ private String _organisation; private String _module; private String _revision; - private File _cache; + private File _cache; private boolean _overwrite = false; private String _from; private String _to; private boolean _transitive; private String _type; private String _matcher = PatternMatcher.EXACT; + private boolean _haltOnUnresolved = true; public void execute() throws BuildException { Ivy ivy = getIvyInstance(); @@ -58,12 +60,12 @@ if (_module == null && PatternMatcher.EXACT.equals(_matcher)) { throw new BuildException("no module name provided for ivy publish task: It can either be set explicitely via the attribute 'module' or via 'ivy.module' property or a prior call to <resolve/>"); } else if (_module == null && !PatternMatcher.EXACT.equals(_matcher)) { - _module = PatternMatcher.ANY_EXPRESSION; + _module = PatternMatcher.ANY_EXPRESSION; } if (_revision == null && PatternMatcher.EXACT.equals(_matcher)) { throw new BuildException("no module revision provided for ivy publish task: It can either be set explicitely via the attribute 'revision' or via 'ivy.revision' property or a prior call to <resolve/>"); } else if (_revision == null && !PatternMatcher.EXACT.equals(_matcher)) { - _revision = PatternMatcher.ANY_EXPRESSION; + _revision = PatternMatcher.ANY_EXPRESSION; } if (_from == null) { throw new BuildException("no from resolver name: please provide it through parameter 'from'"); @@ -72,13 +74,26 @@ throw new BuildException("no to resolver name: please provide it through parameter 'to'"); } ModuleRevisionId mrid = ModuleRevisionId.newInstance(_organisation, _module, _revision); + ResolveReport report; try { - ivy.install(mrid, _from, _to, _transitive, doValidate(settings), _overwrite, FilterHelper.getArtifactTypeFilter(_type), _cache, _matcher); + report = ivy.install(mrid, _from, _to, _transitive, doValidate(settings), _overwrite, FilterHelper.getArtifactTypeFilter(_type), _cache, _matcher); } catch (Exception e) { throw new BuildException("impossible to install "+ mrid +": "+e, e); } + + if (report.getUnresolvedDependencies().length > 0 && isHaltonunresolved()) { + throw new BuildException(report.getUnresolvedDependencies().length + +" unresolved dependencies - see output for details"); + } } - + + public boolean isHaltonunresolved() { + return _haltOnUnresolved; + } + public void setHaltonunresolved(boolean haltOnUnresolved) { + _haltOnUnresolved = haltOnUnresolved; + } + public File getCache() { return _cache; } @@ -134,11 +149,11 @@ public void setType(String type) { _type = type; } - + public String getMatcher() { return _matcher; } - + public void setMatcher(String matcher) { _matcher = matcher; } Added: incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstallTest.java URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstallTest.java?view=auto&rev=532027 ============================================================================== --- incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstallTest.java (added) +++ incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstallTest.java Tue Apr 24 10:53:20 2007 @@ -0,0 +1,101 @@ +/* + * 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.File; + +import junit.framework.TestCase; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.taskdefs.Delete; + + +public class IvyInstallTest extends TestCase { + private File _cache; + private IvyInstall _install; + private Project _project; + + protected void setUp() throws Exception { + createCache(); + cleanTestLib(); + _project = new Project(); + _project.setProperty("ivy.settings.file", "test/repositories/ivysettings.xml"); + + _install = new IvyInstall(); + _install.setProject(_project); + _install.setCache(_cache); + } + + private void createCache() { + _cache = new File("build/cache"); + _cache.mkdirs(); + } + + protected void tearDown() throws Exception { + cleanCache(); + cleanTestLib(); + } + + private void cleanCache() { + Delete del = new Delete(); + del.setProject(new Project()); + del.setDir(_cache); + del.execute(); + } + + private void cleanTestLib() { + Delete del = new Delete(); + del.setProject(new Project()); + del.setDir(new File("build/test/lib")); + del.execute(); + } + + public void testDependencyNotFoundFailure() { + _install.setOrganisation("xxx"); + _install.setModule("yyy"); + _install.setRevision("zzz"); + _install.setFrom("test"); + _install.setTo("1"); + + try { + _install.execute(); + fail("unknown dependency, failure expected (haltunresolved=true)"); + } catch (BuildException be) { + // success + assertTrue("invalid exception message, it should contain '1 unresolved'," + +" but it's: '"+be.getMessage()+"'", + be.getMessage().indexOf("1 unresolved") != -1); + } + } + + public void testDependencyNotFoundSuccess() { + _install.setOrganisation("xxx"); + _install.setModule("yyy"); + _install.setRevision("zzz"); + _install.setFrom("test"); + _install.setTo("1"); + _install.setHaltonunresolved(false); + + try { + _install.execute(); + } catch (BuildException be) { + fail("unknown dependency, failure unexepected (haltunresolved=false)"); + } + } +} __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
