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:
parent
2e0ffe0ee8
commit
96347e9cd7
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue