Add a fail task that makes a test case fail if no condition is provided or if the provided one is evaluated to false

git-svn-id: https://svn.apache.org/repos/asf/ant/antlibs/antunit/trunk@829913 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nicolas Lalevee 2009-10-26 19:25:01 +00:00
parent 2e0ffe0ee8
commit 96347e9cd7
6 changed files with 59 additions and 34 deletions

View File

@ -52,6 +52,10 @@
assertPropertyContains was not checking the value of the property but
the name of the property.
</action>
<action type="add">
Add a fail task that makes a test case fail if no condition is provided or
if the provided one is evaluated to false.
</action>
</release>
<release version="1.1" date="2008-09-26">

View File

@ -29,6 +29,14 @@ under the License.
</au:antunit>
</target>
<target name="fail">
<au:fail />
</target>
<target name="failWithMessage">
<au:fail message="This test is expecting to fail" />
</target>
<target name="assertTruePass">
<au:assertTrue>
<istrue value="true"/>

View File

@ -26,7 +26,7 @@ import org.apache.tools.ant.taskdefs.condition.ConditionBase;
/**
* Exits the active build, giving an additional message if the single
* nested condition fails.
* nested condition fails or if there is no condition at all.
*
* <p>This one could as well be implemented as
*
@ -68,11 +68,7 @@ public class AssertTask extends ConditionBase {
throw new BuildException("You must not specify more than one "
+ "condition", getLocation());
}
if (count < 1) {
throw new BuildException("You must specify a condition",
getLocation());
}
if (!((Condition) getConditions().nextElement()).eval()) {
if (count < 1 || !((Condition) getConditions().nextElement()).eval()) {
throw new AssertionFailedException(message, getLocation());
}
}

View File

@ -29,7 +29,7 @@ import org.apache.tools.ant.Location;
public class AssertionFailedException extends BuildException {
private static final long serialVersionUID = -1193299712860263327L;
public static final String DEFAULT_MESSAGE = "Assertion failed";
public static final String DEFAULT_MESSAGE = "Test failed";
public AssertionFailedException(String message) {
super(message);

View File

@ -21,7 +21,7 @@ under the License.
<taskdef name="antunit"
classname="org.apache.ant.antunit.AntUnit"/>
<taskdef name="assertTrue"
<taskdef name="fail"
classname="org.apache.ant.antunit.AssertTask"/>
<taskdef name="expectfailure"
@ -45,15 +45,26 @@ under the License.
<typedef name="logcontent"
classname="org.apache.ant.antunit.LogContent" />
<!-- Actually just an alias of fail that expects a condition -->
<macrodef name="assertTrue" backtrace="false">
<attribute name="message" default="Assertion failed"/>
<element name="assertion" implicit="true"/>
<sequential>
<au:fail message="@{message}">
<assertion/>
</au:fail>
</sequential>
</macrodef>
<macrodef name="assertFalse" backtrace="false">
<attribute name="message" default="Assertion failed"/>
<element name="assertion" implicit="true"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<not>
<assertion/>
</not>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -64,10 +75,10 @@ under the License.
<attribute name="message"
default="Expected '@{expected}' but was '@{actual}'"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<equals arg1="@{expected}" arg2="@{actual}"
casesensitive="@{casesensitive}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -76,9 +87,9 @@ under the License.
<attribute name="message"
default="Expected property '@{name}'"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<isset property="@{name}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -103,10 +114,10 @@ under the License.
default="Expected property '@{name}' to contain value '@{value}' but was '${@{name}}'"/>
<sequential>
<au:assertPropertySet message="@{message}" name="@{name}"/>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<contains string="${@{name}}" substring="@{value}"
casesensitive="@{casesensitive}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -115,9 +126,9 @@ under the License.
<attribute name="message"
default="Expected file '@{file}' to exist"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<available file="@{file}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -139,10 +150,10 @@ under the License.
<attribute name="message"
default="Expected resource '@{resource}' to contain value '@{value}' but was '${@{resource}}'"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<resourcecontains resource="@{resource}" substring="@{value}"
casesensitive="@{casesensitive}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -166,9 +177,9 @@ under the License.
<attribute name="message"
default="Expected '@{dest}' to be more recent than '@{src}'"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<uptodate srcfile="@{src}" targetfile="@{dest}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -190,9 +201,9 @@ under the License.
<attribute name="message"
default="Expected files '@{expected}' and '@{actual}' to match"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<filesmatch file1="@{expected}" file2="@{actual}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -213,9 +224,9 @@ under the License.
<attribute name="message"
default="Expected reference '@{refid}'"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<isreference refid="@{refid}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -226,9 +237,9 @@ under the License.
default="Expected reference '@{refid}' to be a '@{type}'"/>
<sequential>
<au:assertReferenceSet refid="@{refid}"/>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<isreference refid="@{refid}" type="@{type}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -238,9 +249,9 @@ under the License.
<attribute name="message"
default="Expected log to contain '@{text}' at level @{level}"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<au:logcontains text="@{text}" level="@{level}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -265,12 +276,12 @@ under the License.
<attribute name="message"
default="Expected '@{string}' to match pattern '@{pattern}'"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<matches string="@{string}" pattern="@{pattern}"
casesensitive="@{casesensitive}"
singleline="@{singleline}"
multiline="@{multiline}"/>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>
@ -283,14 +294,14 @@ under the License.
<attribute name="message"
default="Expected '@{string}' to not match pattern '@{pattern}'"/>
<sequential>
<au:assertTrue message="@{message}">
<au:fail message="@{message}">
<not>
<matches string="@{string}" pattern="@{pattern}"
casesensitive="@{casesensitive}"
singleline="@{singleline}"
multiline="@{multiline}"/>
</not>
</au:assertTrue>
</au:fail>
</sequential>
</macrodef>

View File

@ -31,6 +31,12 @@ public class AssertTest extends BuildFileTest {
configureProject("src/etc/testcases/assert.xml");
}
public void testFail() {
testFail("fail", "Test failed");
}
public void testFailWithMessage() {
testFail("failWithMessage", "This test is expecting to fail");
}
public void testTruePass() {
testPass("assertTruePass");
}