You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2005/07/04 14:07:51 UTC
svn commit: r209062 - in /ant/sandbox/antlibs/antunit/trunk: docs/
src/etc/testcases/ src/main/org/apache/ant/antunit/
src/testcases/org/apache/ant/antunit/
Author: bodewig
Date: Mon Jul 4 05:07:49 2005
New Revision: 209062
URL: http://svn.apache.org/viewcvs?rev=209062&view=rev
Log:
New task expectfailure
Added:
ant/sandbox/antlibs/antunit/trunk/docs/expectfailure.html (with props)
ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/expectfailure.xml (with props)
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ExpectFailureTask.java (with props)
ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/ExpectFailureTest.java (with props)
Modified:
ant/sandbox/antlibs/antunit/trunk/docs/index.hmtl
ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/antlib.xml
Added: ant/sandbox/antlibs/antunit/trunk/docs/expectfailure.html
URL: http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/docs/expectfailure.html?rev=209062&view=auto
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/docs/expectfailure.html (added)
+++ ant/sandbox/antlibs/antunit/trunk/docs/expectfailure.html Mon Jul 4 05:07:49 2005
@@ -0,0 +1,67 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Language" content="en-us"></meta>
+ <title>expectfailure Task</title>
+ </head>
+
+ <body>
+ <h2><a name="expectfailure">expectfailure</a></h2>
+
+ <h3>Description</h3>
+
+ <p>Asserts that a number of nested tasks throws a BuildException.</p>
+
+ <h3>Parameters</h3>
+ <table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Attribute</b></td>
+ <td valign="top"><b>Description</b></td>
+ <td align="center" valign="top"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td valign="top">message</td>
+ <td valign="top">Message for the exception if the condition
+ doesn't hold true. Defaults to "Expected build failure" if
+ expectedMessage hasn't been specified or "Expected build
+ failure with message '<em>expectedMessage</em>' but was
+ '<em>actualMessage</em>'" if it has been specified and a
+ different exception has been thrown.</td>
+ <td align="center">No.</td>
+ </tr>
+ <tr>
+ <td valign="top">expectedMessage</td>
+ <td valign="top">Used to assert a specific exception message.</td>
+ <td align="center">No.</td>
+ </tr>
+ </table>
+
+ <h3>Parameters specified as nested elements</h3>
+ <h4>all Ant tasks</h4>
+
+ <p>You can use all supported tasks and types as nested element of
+ this task.</p>
+
+ <h3>Examples</h3>
+
+ <p>Make the build fail with the message "expected build failure
+ with message='failed' but was 'passed'":</p>
+
+ <pre>
+ <expectfailure expectedMessage="failed">
+ <fail>passed<fail>
+ </expectfailure>
+ </pre>
+
+ <p>Make the build fail with the message "expected build failure"
+ because the nested task doesn't cause a build failure:</p>
+
+ <pre>
+ <expectfailure>
+ <echo>BUILD FAILED</echo>
+ </expectfailure>
+ </pre>
+
+ <hr/>
+ <p align="center">Copyright © 2005 The Apache Software Foundation. All rights Reserved.</p>
+ </body>
+</html>
\ No newline at end of file
Propchange: ant/sandbox/antlibs/antunit/trunk/docs/expectfailure.html
------------------------------------------------------------------------------
svn:eol-style = native
Modified: ant/sandbox/antlibs/antunit/trunk/docs/index.hmtl
URL: http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/docs/index.hmtl?rev=209062&r1=209061&r2=209062&view=diff
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/docs/index.hmtl (original)
+++ ant/sandbox/antlibs/antunit/trunk/docs/index.hmtl Mon Jul 4 05:07:49 2005
@@ -103,6 +103,10 @@
<li><a href="assertions.html">more assertions</a> - useful
specialized versions of assertTrue.</li>
+ <li><a href="expectfailure.html">expectfailure</a> - a task
+ container useful for tests that assert build failures.</li>
+ </ul>
+
<hr/>
<p align="center">Copyright © 2005 The Apache Software Foundation. All rights Reserved.</p>
</body>
Added: ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/expectfailure.xml
URL: http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/expectfailure.xml?rev=209062&view=auto
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/expectfailure.xml (added)
+++ ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/expectfailure.xml Mon Jul 4 05:07:49 2005
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+
+<!--
+ Copyright 2005 The Apache Software Foundation
+
+ Licensed 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="antunit-test"
+ default="all" xmlns:au="antlib:org.apache.ant.antunit">
+
+ <target name="passNoMessage">
+ <au:expectfailure>
+ <fail>foo</fail>
+ </au:expectfailure>
+ </target>
+
+ <target name="passMessage">
+ <au:expectfailure expectedMessage="foo">
+ <fail>foo</fail>
+ </au:expectfailure>
+ </target>
+
+ <target name="failNoMessage">
+ <au:expectfailure>
+ <echo>foo</echo>
+ </au:expectfailure>
+ </target>
+
+ <target name="failWrongMessage">
+ <au:expectfailure expectedMessage="bar">
+ <fail>foo</fail>
+ </au:expectfailure>
+ </target>
+
+ <target name="failNoMessageMessageSet">
+ <au:expectfailure message="oops">
+ <echo>foo</echo>
+ </au:expectfailure>
+ </target>
+
+ <target name="failWrongMessageMessageSet">
+ <au:expectfailure expectedMessage="bar" message="oops">
+ <fail>foo</fail>
+ </au:expectfailure>
+ </target>
+
+</project>
\ No newline at end of file
Propchange: ant/sandbox/antlibs/antunit/trunk/src/etc/testcases/expectfailure.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ExpectFailureTask.java
URL: http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ExpectFailureTask.java?rev=209062&view=auto
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ExpectFailureTask.java (added)
+++ ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ExpectFailureTask.java Mon Jul 4 05:07:49 2005
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.ant.antunit;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.Sequential;
+
+/**
+ * Expects the nested tasks to throw a BuildException and optinally
+ * asserts the message of that exception.
+ *
+ * <p>Throws a AssertFailedException if the nested tasks do not throw
+ * the expected BuildException.</p>
+ */
+public class ExpectFailureTask extends Sequential {
+
+ private String expectedMessage;
+ private String message;
+
+ /**
+ * The exception message to expect.
+ */
+ public void setExpectedMessage(String m) {
+ expectedMessage = m;
+ }
+
+ /**
+ * The message to use in the AssertinFailedException if the nested
+ * tasks fail to raise the "correct" exception.
+ */
+ public void setMessage(String m) {
+ message = m;
+ }
+
+ public void execute() {
+ boolean thrown = false;
+ try {
+ super.execute();
+ } catch (BuildException e) {
+ thrown = true;
+ if (expectedMessage != null
+ && !expectedMessage.equals(e.getMessage())) {
+ if (message == null) {
+ throw new AssertionFailedException("Expected build failure "
+ + "with message '"
+ + expectedMessage
+ + "' but was '"
+ + e.getMessage() + "'");
+ } else {
+ throw new AssertionFailedException(message);
+ }
+ }
+ }
+
+ if (!thrown) {
+ if (message == null) {
+ throw new AssertionFailedException("Expected build failure");
+ } else {
+ throw new AssertionFailedException(message);
+ }
+ }
+ }
+}
\ No newline at end of file
Propchange: ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ExpectFailureTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/antlib.xml
URL: http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/antlib.xml?rev=209062&r1=209061&r2=209062&view=diff
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/antlib.xml (original)
+++ ant/sandbox/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/antlib.xml Mon Jul 4 05:07:49 2005
@@ -21,6 +21,9 @@
<taskdef name="assertTrue"
classname="org.apache.ant.antunit.AssertTask"/>
+ <taskdef name="expectfailure"
+ classname="org.apache.ant.antunit.ExpectFailureTask"/>
+
<typedef name="plainlistener"
classname="org.apache.ant.antunit.PlainAntUnitListener"/>
Added: ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/ExpectFailureTest.java
URL: http://svn.apache.org/viewcvs/ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/ExpectFailureTest.java?rev=209062&view=auto
==============================================================================
--- ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/ExpectFailureTest.java (added)
+++ ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/ExpectFailureTest.java Mon Jul 4 05:07:49 2005
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed 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.ant.antunit;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildFileTest;
+
+public class ExpectFailureTest extends BuildFileTest {
+
+ public ExpectFailureTest(String name) {
+ super(name);
+ }
+
+ public void setUp() {
+ configureProject("src/etc/testcases/expectfailure.xml");
+ }
+
+ public void testPassNoMessage() {
+ testPass("passNoMessage");
+ }
+ public void testPassMessage() {
+ testPass("passMessage");
+ }
+
+ public void testFailNoMessage() {
+ testFail("failNoMessage", "Expected build failure");
+ }
+ public void testFailMessage() {
+ testFail("failWrongMessage", "Expected build failure with message 'bar'"
+ + " but was 'foo'");
+ }
+ public void testFailNoMessageMessageSet() {
+ testFail("failNoMessageMessageSet", "oops");
+ }
+ public void testFailMessageMessageSet() {
+ testFail("failWrongMessageMessageSet", "oops");
+ }
+
+ private void testPass(String target) {
+ executeTarget(target);
+ }
+ private void testFail(String target, String message) {
+ try {
+ executeTarget(target);
+ fail("Expected an exception");
+ } catch (AssertionFailedException e) {
+ assertEquals(message, e.getMessage());
+ }
+ }
+}
Propchange: ant/sandbox/antlibs/antunit/trunk/src/testcases/org/apache/ant/antunit/ExpectFailureTest.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org