Author: bodewig
Date: Mon Oct  5 04:18:34 2009
New Revision: 821676

URL: http://svn.apache.org/viewvc?rev=821676&view=rev
Log:
Make fail task use the same if/unless logic as target

Added:
    ant/core/trunk/src/tests/antunit/taskdefs/fail-test.xml   (with props)
Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Exit.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Exit.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Exit.java?rev=821676&r1=821675&r2=821676&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Exit.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Exit.java Mon Oct  5 
04:18:34 2009
@@ -19,6 +19,7 @@
 package org.apache.tools.ant.taskdefs;
 
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.PropertyHelper;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.ExitStatusException;
@@ -59,7 +60,7 @@
     }
 
     private String message;
-    private String ifCondition, unlessCondition;
+    private Object ifCondition, unlessCondition;
     private NestedCondition nestedCondition;
     private Integer status;
 
@@ -73,23 +74,44 @@
     }
 
     /**
-     * Only fail if a property of the given name exists in the current project.
-     * @param c property name
+     * Only fail if the given expression evaluates to true or the name
+     * of an existing property.
+     * @param c property name or evaluated expression
+     * @since Ant 1.8.0
      */
-    public void setIf(String c) {
+    public void setIf(Object c) {
         ifCondition = c;
     }
 
     /**
-     * Only fail if a property of the given name does not
-     * exist in the current project.
-     * @param c property name
+     * Only fail if the given expression evaluates to true or the name
+     * of an existing property.
+     * @param c property name or evaluated expression
      */
-    public void setUnless(String c) {
+    public void setIf(String c) {
+        setIf((Object) c);
+    }
+
+    /**
+     * Only fail if the given expression evaluates to false or tno
+     * property of the given name exists.
+     * @param c property name or evaluated expression
+     * @since Ant 1.8.0
+     */
+    public void setUnless(Object c) {
         unlessCondition = c;
     }
 
     /**
+     * Only fail if the given expression evaluates to false or tno
+     * property of the given name exists.
+     * @param c property name or evaluated expression
+     */
+    public void setUnless(String c) {
+        setUnless((Object) c);
+    }
+
+    /**
      * Set the status code to associate with the thrown Exception.
      * @param i   the <code>int</code> status
      */
@@ -117,12 +139,10 @@
             if (message != null && message.trim().length() > 0) {
                 text = message.trim();
             } else {
-                if (ifCondition != null && ifCondition.length() > 0
-                    && getProject().getProperty(ifCondition) != null) {
+                if (!testIfCondition()) {
                     text = "if=" + ifCondition;
                 }
-                if (unlessCondition != null && unlessCondition.length() > 0
-                    && getProject().getProperty(unlessCondition) == null) {
+                if (!testUnlessCondition()) {
                     if (text == null) {
                         text = "";
                     } else {
@@ -173,10 +193,8 @@
      * @return true if there is no if condition, or the named property exists
      */
     private boolean testIfCondition() {
-        if (ifCondition == null || "".equals(ifCondition)) {
-            return true;
-        }
-        return getProject().getProperty(ifCondition) != null;
+        return PropertyHelper.getPropertyHelper(getProject())
+            .testIfCondition(ifCondition);
     }
 
     /**
@@ -185,10 +203,8 @@
      *  or there is a named property but it doesn't exist
      */
     private boolean testUnlessCondition() {
-        if (unlessCondition == null || "".equals(unlessCondition)) {
-            return true;
-        }
-        return getProject().getProperty(unlessCondition) == null;
+        return PropertyHelper.getPropertyHelper(getProject())
+            .testUnlessCondition(unlessCondition);
     }
 
     /**

Added: ant/core/trunk/src/tests/antunit/taskdefs/fail-test.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/fail-test.xml?rev=821676&view=auto
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/fail-test.xml (added)
+++ ant/core/trunk/src/tests/antunit/taskdefs/fail-test.xml Mon Oct  5 04:18:34 
2009
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+  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.
+-->
+
+<project name="echo-test" default="antunit"
+         xmlns:au="antlib:org.apache.ant.antunit">
+  <import file="../antunit-base.xml" />
+
+  <target name="testIfNotSet">
+    <au:expectfailure>
+      <fail unless="${if}"/>
+    </au:expectfailure>
+    <fail if="${if}"/>
+  </target>
+
+  <target name="testIfTrue">
+    <property name="if" value="true"/>
+    <fail unless="${if}"/>
+    <au:expectfailure>
+      <fail if="${if}"/>
+    </au:expectfailure>
+  </target>
+
+  <target name="testIfFalse">
+    <property name="if" value="false"/>
+    <au:expectfailure>
+      <fail unless="${if}"/>
+    </au:expectfailure>
+    <fail if="${if}"/>
+  </target>
+
+</project>

Propchange: ant/core/trunk/src/tests/antunit/taskdefs/fail-test.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to