Import sandbox antlibs
git-svn-id: https://svn.apache.org/repos/asf/ant/sandbox/antlibs/antunit/trunk@161469 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
commit
922d7882dc
|
|
@ -0,0 +1,93 @@
|
|||
<?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 default="compile">
|
||||
|
||||
<target name="setup">
|
||||
<property name="build" value="build"/>
|
||||
<property name="build.classes" value="${build}/classes"/>
|
||||
<property name="build.testclasses" value="${build}/test-classes"/>
|
||||
<property name="build.lib" value="${build}/lib"/>
|
||||
<property name="jarname" value="${build.lib}/ant-antunit.jar"/>
|
||||
<mkdir dir="${build.classes}"/>
|
||||
<mkdir dir="${build.testclasses}"/>
|
||||
<mkdir dir="${build.lib}"/>
|
||||
</target>
|
||||
|
||||
<target name="compile" depends="setup">
|
||||
<javac
|
||||
srcdir="src/main"
|
||||
destdir="${build.classes}"
|
||||
debug="true"
|
||||
/>
|
||||
</target>
|
||||
|
||||
<target name="antlib" depends="compile">
|
||||
<copy todir="${build.classes}">
|
||||
<fileset dir="src/main" includes="**/antlib.xml"/>
|
||||
</copy>
|
||||
<jar
|
||||
destfile="${jarname}"
|
||||
basedir="${build.classes}"
|
||||
/>
|
||||
</target>
|
||||
|
||||
<target name="setup-for-tests" depends="setup">
|
||||
<ant
|
||||
antfile="../../../build.xml"
|
||||
target="test-jar"
|
||||
inheritall="false"
|
||||
/>
|
||||
</target>
|
||||
|
||||
<target name="compile-tests" depends="setup-for-tests, antlib">
|
||||
<javac
|
||||
srcdir="src/testcases"
|
||||
destdir="${build.testclasses}"
|
||||
debug="true"
|
||||
>
|
||||
<classpath>
|
||||
<pathelement location="${jarname}"/>
|
||||
<pathelement location="../../../build/lib/ant-testutil.jar"/>
|
||||
</classpath>
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<target name="test" depends="compile-tests">
|
||||
<junit
|
||||
printsummary="false"
|
||||
haltonfailure="false"
|
||||
failureproperty="tests.failed"
|
||||
filtertrace="false"
|
||||
fork="true"
|
||||
forkmode="once"
|
||||
>
|
||||
<classpath>
|
||||
<pathelement location="${jarname}"/>
|
||||
<pathelement location="../../../build/lib/ant-testutil.jar"/>
|
||||
<pathelement location="${build.testclasses}"/>
|
||||
</classpath>
|
||||
|
||||
<batchtest>
|
||||
<fileset dir="src/testcases"/>
|
||||
</batchtest>
|
||||
|
||||
<formatter type="plain" usefile="false"/>
|
||||
</junit>
|
||||
|
||||
<fail if="tests.failed">At least one test has failed.</fail>
|
||||
</target>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
<?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="assert-test"
|
||||
default="all" xmlns:au="antlib:org.apache.ant.antlib.antunit">
|
||||
|
||||
<target name="all">
|
||||
<fail>Only run via JUnit</fail>
|
||||
</target>
|
||||
|
||||
<target name="assertTruePass">
|
||||
<au:assertTrue>
|
||||
<istrue value="true"/>
|
||||
</au:assertTrue>
|
||||
</target>
|
||||
|
||||
<target name="assertTrueFail">
|
||||
<au:assertTrue>
|
||||
<istrue value="false"/>
|
||||
</au:assertTrue>
|
||||
</target>
|
||||
|
||||
<target name="assertFalsePass">
|
||||
<au:assertFalse>
|
||||
<isfalse value="true"/>
|
||||
</au:assertFalse>
|
||||
</target>
|
||||
|
||||
<target name="assertFalseFail">
|
||||
<au:assertFalse>
|
||||
<isfalse value="false"/>
|
||||
</au:assertFalse>
|
||||
</target>
|
||||
|
||||
<target name="assertEqualsPass">
|
||||
<au:assertEquals expected="bar" actual="bar"/>
|
||||
</target>
|
||||
|
||||
<target name="assertEqualsCasePass">
|
||||
<au:assertEquals expected="bar" actual="BAR" casesensitive="false"/>
|
||||
</target>
|
||||
|
||||
<target name="assertEqualsFail1">
|
||||
<au:assertEquals expected="bar" actual="baz"/>
|
||||
</target>
|
||||
|
||||
<target name="assertEqualsFail2">
|
||||
<au:assertEquals expected="bar" actual="BAR"/>
|
||||
</target>
|
||||
|
||||
<target name="assertPropertySetPass">
|
||||
<property name="foo" value="bar"/>
|
||||
<au:assertPropertySet name="foo"/>
|
||||
</target>
|
||||
|
||||
<target name="assertPropertySetFail">
|
||||
<au:assertPropertySet name="foo"/>
|
||||
</target>
|
||||
|
||||
<target name="assertPropertyEqualsPass">
|
||||
<property name="foo" value="bar"/>
|
||||
<au:assertPropertyEquals name="foo" value="bar"/>
|
||||
</target>
|
||||
|
||||
<target name="assertPropertyEqualsCasePass">
|
||||
<property name="foo" value="bar"/>
|
||||
<au:assertPropertyEquals name="foo" value="BAR" casesensitive="false"/>
|
||||
</target>
|
||||
|
||||
<target name="assertPropertyEqualsFail1">
|
||||
<au:assertPropertyEquals name="foo" value="bar"/>
|
||||
</target>
|
||||
|
||||
<target name="assertPropertyEqualsFail2">
|
||||
<property name="foo" value="bar"/>
|
||||
<au:assertPropertyEquals name="foo" value="baz"/>
|
||||
</target>
|
||||
|
||||
<target name="assertPropertyEqualsFail3">
|
||||
<property name="foo" value="bar"/>
|
||||
<au:assertPropertyEquals name="foo" value="BAR"/>
|
||||
</target>
|
||||
|
||||
<target name="assertFileExistsPass">
|
||||
<au:assertFileExists file="assert.xml"/>
|
||||
</target>
|
||||
|
||||
<target name="assertFileExistsFail">
|
||||
<au:assertFileExists file="assert.txt"/>
|
||||
</target>
|
||||
|
||||
<target name="assertFileDoesntExistPass">
|
||||
<au:assertFileDoesntExist file="assert.txt"/>
|
||||
</target>
|
||||
|
||||
<target name="assertFileDoesntExistFail">
|
||||
<au:assertFileDoesntExist file="assert.xml"/>
|
||||
</target>
|
||||
|
||||
<target name="assertDestIsUptodatePass">
|
||||
<au:assertDestIsUptodate
|
||||
src="../../main/org/apache/ant/antlib/antunit/AssertTask.java"
|
||||
|
||||
dest="../../../build/classes/org/apache/ant/antlib/antunit/AssertTask.class"/>
|
||||
</target>
|
||||
|
||||
<target name="assertDestIsUptodateFail">
|
||||
<au:assertDestIsUptodate
|
||||
dest="../../main/org/apache/ant/antlib/antunit/AssertTask.java"
|
||||
|
||||
src="../../../build/classes/org/apache/ant/antlib/antunit/AssertTask.class"/>
|
||||
</target>
|
||||
|
||||
<target name="assertDestIsOutofdatePass">
|
||||
<au:assertDestIsOutofdate
|
||||
dest="../../main/org/apache/ant/antlib/antunit/AssertTask.java"
|
||||
|
||||
src="../../../build/classes/org/apache/ant/antlib/antunit/AssertTask.class"/>
|
||||
</target>
|
||||
|
||||
<target name="assertDestIsOutofdateFail">
|
||||
<au:assertDestIsOutofdate
|
||||
src="../../main/org/apache/ant/antlib/antunit/AssertTask.java"
|
||||
|
||||
dest="../../../build/classes/org/apache/ant/antlib/antunit/AssertTask.class"/>
|
||||
</target>
|
||||
|
||||
</project>
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* 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.antlib.antunit;
|
||||
|
||||
import org.apache.tools.ant.BuildException;
|
||||
import org.apache.tools.ant.taskdefs.condition.Condition;
|
||||
import org.apache.tools.ant.taskdefs.condition.ConditionBase;
|
||||
|
||||
/**
|
||||
* Exits the active build, giving an additional message if the single
|
||||
* nested condition fails.
|
||||
*
|
||||
* <p>This one could as well be implemented as
|
||||
*
|
||||
* <pre>
|
||||
* <macrodef name="assertTrue">
|
||||
* <attribute name="message" default="Assertion failed"/>
|
||||
* <element name="assertion" implicit="true"/>
|
||||
* <sequential>
|
||||
* <fail message="@{message}">
|
||||
* <condition>
|
||||
* <assertion/>
|
||||
* </condition>
|
||||
* </fail>
|
||||
* </sequential>
|
||||
* </macrodef>
|
||||
* </pre>
|
||||
*
|
||||
* but wouldn't be able to throw a specialized exception that way -
|
||||
* and the macrodef would nest the exception in yet another
|
||||
* BuildException.</p>
|
||||
*/
|
||||
public class AssertTask extends ConditionBase {
|
||||
|
||||
private String message = AssertionFailedException.DEFAULT_MESSAGE;
|
||||
|
||||
public void setMessage(String value) {
|
||||
this.message = value;
|
||||
}
|
||||
|
||||
public void execute() throws BuildException {
|
||||
int count = countConditions();
|
||||
if (count > 1) {
|
||||
throw new BuildException("You must not specify more tha one "
|
||||
+ "conditions");
|
||||
}
|
||||
if (count < 1) {
|
||||
throw new BuildException("You must specify a condition");
|
||||
}
|
||||
if (!((Condition) getConditions().nextElement()).eval()) {
|
||||
throw new AssertionFailedException(message);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* 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.antlib.antunit;
|
||||
|
||||
import org.apache.tools.ant.BuildException;
|
||||
|
||||
/**
|
||||
* Specialized BuildException thrown by the AssertTask task.
|
||||
*/
|
||||
public class AssertionFailedException extends BuildException {
|
||||
|
||||
public static final String DEFAULT_MESSAGE = "Assertion failed";
|
||||
|
||||
public AssertionFailedException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
<?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.
|
||||
-->
|
||||
<antlib xmlns:au="antlib:org.apache.ant.antlib.antunit">
|
||||
<taskdef name="assertTrue"
|
||||
classname="org.apache.ant.antlib.antunit.AssertTask"/>
|
||||
|
||||
<macrodef name="assertFalse">
|
||||
<attribute name="message" default="Assertion failed"/>
|
||||
<element name="assertion" implicit="true"/>
|
||||
<sequential>
|
||||
<au:assertTrue message="@{message}">
|
||||
<not>
|
||||
<assertion/>
|
||||
</not>
|
||||
</au:assertTrue>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="assertEquals">
|
||||
<attribute name="expected"/>
|
||||
<attribute name="actual"/>
|
||||
<attribute name="casesensitive" default="true"/>
|
||||
<attribute name="message"
|
||||
default="Expected '@{expected}' but was '@{actual}'"/>
|
||||
<sequential>
|
||||
<au:assertTrue message="@{message}">
|
||||
<equals arg1="@{expected}" arg2="@{actual}"
|
||||
casesensitive="@{casesensitive}"/>
|
||||
</au:assertTrue>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="assertPropertySet">
|
||||
<attribute name="name"/>
|
||||
<attribute name="message"
|
||||
default="Expected property '@{name}'"/>
|
||||
<sequential>
|
||||
<au:assertTrue message="@{message}">
|
||||
<isset property="@{name}"/>
|
||||
</au:assertTrue>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="assertPropertyEquals">
|
||||
<attribute name="name"/>
|
||||
<attribute name="value"/>
|
||||
<attribute name="casesensitive" default="true"/>
|
||||
<attribute name="message"
|
||||
default="Expected property '@{name}' to have value '@{value}' but was '${@{name}}'"/>
|
||||
<sequential>
|
||||
<au:assertPropertySet message="@{message}" name="@{name}"/>
|
||||
<au:assertEquals message="@{message}" expected="@{value}"
|
||||
actual="${@{name}}" casesensitive="@{casesensitive}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="assertFileExists">
|
||||
<attribute name="file"/>
|
||||
<attribute name="message"
|
||||
default="Expected file '@{file}' to exist"/>
|
||||
<sequential>
|
||||
<au:assertTrue message="@{message}">
|
||||
<available file="@{file}"/>
|
||||
</au:assertTrue>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="assertFileDoesntExist">
|
||||
<attribute name="file"/>
|
||||
<attribute name="message"
|
||||
default="Didn't expect file '@{file}' to exist"/>
|
||||
<sequential>
|
||||
<au:assertFalse message="@{message}">
|
||||
<available file="@{file}"/>
|
||||
</au:assertFalse>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="assertDestIsUptodate">
|
||||
<attribute name="src"/>
|
||||
<attribute name="dest"/>
|
||||
<attribute name="message"
|
||||
default="Expected '@{dest}' to be more recent than '@{src}'"/>
|
||||
<sequential>
|
||||
<au:assertTrue message="@{message}">
|
||||
<uptodate srcfile="@{src}" targetfile="@{dest}"/>
|
||||
</au:assertTrue>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="assertDestIsOutofdate">
|
||||
<attribute name="src"/>
|
||||
<attribute name="dest"/>
|
||||
<attribute name="message"
|
||||
default="Expected '@{src}' to be more recent than '@{dest}'"/>
|
||||
<sequential>
|
||||
<au:assertFalse message="@{message}">
|
||||
<uptodate srcfile="@{src}" targetfile="@{dest}"/>
|
||||
</au:assertFalse>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
</antlib>
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
/*
|
||||
* 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.antlib.antunit;
|
||||
|
||||
import org.apache.tools.ant.BuildException;
|
||||
import org.apache.tools.ant.BuildFileTest;
|
||||
|
||||
public class AssertTest extends BuildFileTest {
|
||||
|
||||
public AssertTest(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public void setUp() {
|
||||
configureProject("src/etc/testcases/assert.xml");
|
||||
}
|
||||
|
||||
public void testTruePass() {
|
||||
testPass("assertTruePass");
|
||||
}
|
||||
public void testFalsePass() {
|
||||
testPass("assertFalsePass");
|
||||
}
|
||||
public void testEqualsPass() {
|
||||
testPass("assertEqualsPass");
|
||||
}
|
||||
public void testEqualsCasePass() {
|
||||
testPass("assertEqualsCasePass");
|
||||
}
|
||||
public void testPropertySetPass() {
|
||||
testPass("assertPropertySetPass");
|
||||
}
|
||||
public void testPropertyEqualsPass() {
|
||||
testPass("assertPropertyEqualsPass");
|
||||
}
|
||||
public void testPropertyEqualsCasePass() {
|
||||
testPass("assertPropertyEqualsCasePass");
|
||||
}
|
||||
public void testFileExistsPass() {
|
||||
testPass("assertFileExistsPass");
|
||||
}
|
||||
public void testFileDoesntExistPass() {
|
||||
testPass("assertFileDoesntExistPass");
|
||||
}
|
||||
public void testDestIsUptodatePass() {
|
||||
testPass("assertDestIsUptodatePass");
|
||||
}
|
||||
public void testDestIsOutofdatePass() {
|
||||
testPass("assertDestIsOutofdatePass");
|
||||
}
|
||||
|
||||
public void testTrueFail() {
|
||||
testFail("assertTrueFail");
|
||||
}
|
||||
public void testFalseFail() {
|
||||
testFail("assertFalseFail");
|
||||
}
|
||||
public void testEqualsFail1() {
|
||||
testFail("assertEqualsFail1", "Expected 'bar' but was 'baz'");
|
||||
}
|
||||
public void testEqualsFail2() {
|
||||
testFail("assertEqualsFail2", "Expected 'bar' but was 'BAR'");
|
||||
}
|
||||
public void testPropertySetFail() {
|
||||
testFail("assertPropertySetFail", "Expected property 'foo'");
|
||||
}
|
||||
public void testPropertyEqualsFail1() {
|
||||
testFail("assertPropertyEqualsFail1", "Expected property 'foo' to have value 'bar' but was '${foo}'");
|
||||
}
|
||||
public void testPropertyEqualsFail2() {
|
||||
testFail("assertPropertyEqualsFail2", "Expected property 'foo' to have value 'baz' but was 'bar'");
|
||||
}
|
||||
public void testPropertyEqualsFail3() {
|
||||
testFail("assertPropertyEqualsFail3", "Expected property 'foo' to have value 'BAR' but was 'bar'");
|
||||
}
|
||||
public void testFileExistsFail() {
|
||||
testFail("assertFileExistsFail",
|
||||
"Expected file 'assert.txt' to exist");
|
||||
}
|
||||
public void testFileDoesntExistFail() {
|
||||
testFail("assertFileDoesntExistFail",
|
||||
"Didn't expect file 'assert.xml' to exist");
|
||||
}
|
||||
public void testDestIsUptodateFail() {
|
||||
testFail("assertDestIsUptodateFail",
|
||||
"Expected '../../main/org/apache/ant/antlib/antunit/AssertTask.java' to be more recent than '../../../build/classes/org/apache/ant/antlib/antunit/AssertTask.class'");
|
||||
}
|
||||
public void testDestIsOutofdateFail() {
|
||||
testFail("assertDestIsOutofdateFail",
|
||||
"Expected '../../main/org/apache/ant/antlib/antunit/AssertTask.java' to be more recent than '../../../build/classes/org/apache/ant/antlib/antunit/AssertTask.class'");
|
||||
}
|
||||
|
||||
|
||||
private void testPass(String target) {
|
||||
executeTarget(target);
|
||||
}
|
||||
|
||||
private void testFail(String target) {
|
||||
testFail(target, "Assertion failed");
|
||||
}
|
||||
|
||||
private void testFail(String target, String message) {
|
||||
try {
|
||||
executeTarget(target);
|
||||
fail("Expected failed assetion");
|
||||
} catch (AssertionFailedException e) {
|
||||
assertEquals(message, e.getMessage());
|
||||
} catch (BuildException e) {
|
||||
// depending on the number of macrodef indirections, this
|
||||
// can become arbitrarily deep
|
||||
while (true) {
|
||||
Throwable t = e.getCause();
|
||||
assertNotNull(t);
|
||||
assertTrue("nested is a BuildException",
|
||||
t instanceof BuildException);
|
||||
if (t instanceof AssertionFailedException) {
|
||||
assertEquals(message, e.getMessage());
|
||||
break;
|
||||
}
|
||||
e = (BuildException) t;
|
||||
}
|
||||
} // end of try-catch
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue