Author: bodewig
Date: Thu Oct 8 12:58:42 2009
New Revision: 823158
URL: http://svn.apache.org/viewvc?rev=823158&view=rev
Log:
Make junit's formatter if/unless behave like target's if/unless
Added:
ant/core/trunk/src/tests/antunit/taskdefs/optional/junit/junit-formatter-test.xml
(with props)
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java?rev=823158&r1=823157&r2=823158&view=diff
==============================================================================
---
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
(original)
+++
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
Thu Oct 8 12:58:42 2009
@@ -27,6 +27,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
+import org.apache.tools.ant.PropertyHelper;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.util.KeepAliveOutputStream;
@@ -61,8 +62,8 @@
private OutputStream out = new KeepAliveOutputStream(System.out);
private File outFile;
private boolean useFile = true;
- private String ifProperty;
- private String unlessProperty;
+ private Object ifCond;
+ private Object unlessCond;
/**
* Store the project reference for passing it to nested components.
@@ -194,22 +195,45 @@
}
/**
- * Set whether this formatter should be used. It will be
- * used if the property has been set, otherwise it won't.
- * @param ifProperty name of property
+ * Set whether this formatter should be used. It will be used if
+ * the expression evaluates to true or the name of a property
+ * which has been set, otherwise it won't.
+ * @param ifCond name of property
+ * @since Ant 1.8.0
*/
- public void setIf(String ifProperty) {
- this.ifProperty = ifProperty;
+ public void setIf(Object ifCond) {
+ this.ifCond = ifCond;
}
/**
- * Set whether this formatter should NOT be used. It
- * will not be used if the property has been set, orthwise it
- * will be used.
- * @param unlessProperty name of property
+ * Set whether this formatter should be used. It will be used if
+ * the expression evaluates to true or the name of a property
+ * which has been set, otherwise it won't.
+ * @param ifCond name of property
*/
- public void setUnless(String unlessProperty) {
- this.unlessProperty = unlessProperty;
+ public void setIf(String ifCond) {
+ setIf((Object) ifCond);
+ }
+
+ /**
+ * Set whether this formatter should NOT be used. It will be used
+ * if the expression evaluates to false or the name of a property
+ * which has not been set, orthwise it will not be used.
+ * @param unlessCond name of property
+ * @since Ant 1.8.0
+ */
+ public void setUnless(Object unlessCond) {
+ this.unlessCond = unlessCond;
+ }
+
+ /**
+ * Set whether this formatter should NOT be used. It will be used
+ * if the expression evaluates to false or the name of a property
+ * which has not been set, orthwise it will not be used.
+ * @param unlessCond name of property
+ */
+ public void setUnless(String unlessCond) {
+ setUnless((Object) unlessCond);
}
/**
@@ -219,13 +243,9 @@
* @return true if the formatter should be used.
*/
public boolean shouldUse(Task t) {
- if (ifProperty != null && t.getProject().getProperty(ifProperty) ==
null) {
- return false;
- }
- if (unlessProperty != null &&
t.getProject().getProperty(unlessProperty) != null) {
- return false;
- }
- return true;
+ PropertyHelper ph = PropertyHelper.getPropertyHelper(t.getProject());
+ return ph.testIfCondition(ifCond)
+ && ph.testUnlessCondition(unlessCond);
}
/**
Added:
ant/core/trunk/src/tests/antunit/taskdefs/optional/junit/junit-formatter-test.xml
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/optional/junit/junit-formatter-test.xml?rev=823158&view=auto
==============================================================================
---
ant/core/trunk/src/tests/antunit/taskdefs/optional/junit/junit-formatter-test.xml
(added)
+++
ant/core/trunk/src/tests/antunit/taskdefs/optional/junit/junit-formatter-test.xml
Thu Oct 8 12:58:42 2009
@@ -0,0 +1,93 @@
+<?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 default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
+ <import file="../../../antunit-base.xml" />
+
+ <path id="junit">
+ <fileset dir="../../../../../../lib/optional" includes="junit*"/>
+ </path>
+
+ <target name="setUp">
+ <mkdir dir="${input}"/>
+ <mkdir dir="${output}"/>
+ <echo file="${input}/ATest.java"><![CDATA[
+package test;
+import junit.framework.TestCase;
+
+public class ATest extends TestCase {
+ public void testEmpty() {}
+}
+]]></echo>
+ <javac srcdir="${input}" destdir="${output}">
+ <classpath refid="junit"/>
+ </javac>
+ <macrodef name="j">
+ <sequential>
+ <junit fork="true" forkMode="perBatch">
+ <classpath refid="junit"/>
+ <classpath location="${output}"/>
+ <batchtest todir="${output}">
+ <fileset dir="${output}">
+ <include name="**/*Test.class" />
+ </fileset>
+ </batchtest>
+ <formatter type="plain" if="${if}" extension=".dollar_if"/>
+ <formatter type="plain" if="if" extension=".if"/>
+ <formatter type="plain" unless="${if}" extension=".dollar_unless"/>
+ <formatter type="plain" unless="if" extension=".unless"/>
+ </junit>
+ </sequential>
+ </macrodef>
+ </target>
+
+ <target name="testPropertyNotSet" depends="setUp">
+ <j/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.dollar_if"/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.if"/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.dollar_unless"/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.unless"/>
+ </target>
+
+ <target name="testPropertySet" depends="setUp">
+ <property name="if" value="whatever"/>
+ <j/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.dollar_if"/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.if"/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.dollar_unless"/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.unless"/>
+ </target>
+
+ <target name="testPropertyTrue" depends="setUp">
+ <property name="if" value="true"/>
+ <j/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.dollar_if"/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.if"/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.dollar_unless"/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.unless"/>
+ </target>
+
+ <target name="testPropertyFalse" depends="setUp">
+ <property name="if" value="false"/>
+ <j/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.dollar_if"/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.if"/>
+ <au:assertFileExists file="${output}/TEST-test.ATest.dollar_unless"/>
+ <au:assertFileDoesntExist file="${output}/TEST-test.ATest.unless"/>
+ </target>
+
+</project>
Propchange:
ant/core/trunk/src/tests/antunit/taskdefs/optional/junit/junit-formatter-test.xml
------------------------------------------------------------------------------
svn:eol-style = native