stevel 2003/09/22 23:31:46
Modified: src/main/org/apache/tools/ant/types Assertions.java
defaults.properties
src/main/org/apache/tools/ant/taskdefs/optional/jsp
Jasper41Mangler.java
src/main/org/apache/tools/ant/taskdefs Java.java
src/main/org/apache/tools/ant/taskdefs/optional/junit
JUnitTask.java
Added: src/etc/testcases/types assertions.xml
src/testcases/org/apache/tools/ant/types AssertionsTest.java
src/etc/testcases/types/assertions AssertionTest.java
Log:
With these changes assertions now work, at least as far as the java tests are
concerned...not tested junit
Revision Changes Path
1.7 +8 -3 ant/src/main/org/apache/tools/ant/types/Assertions.java
Index: Assertions.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/Assertions.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Assertions.java 21 Sep 2003 20:20:02 -0000 1.6
+++ Assertions.java 23 Sep 2003 06:31:46 -0000 1.7
@@ -55,14 +55,15 @@
package org.apache.tools.ant.types;
import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
/**
- * implement the assertion datatype. This type describes
- * assertion settings for the <java> task and derivatives.
+ * The assertion datatype. This type describes
+ * assertion settings for the <java> task and others.
* One can set the system assertions, and enable/disable those in
* packages & classes.
* Assertions can only be enabled or disabled when forking Java.
@@ -127,7 +128,7 @@
* disable assertions
* @param assertion
*/
- public void addDisable(EnabledAssertion assertion) {
+ public void addDisable(DisabledAssertion assertion) {
checkChildrenAllowed();
assertionList.add(assertion);
}
@@ -196,11 +197,14 @@
* @param commandList
*/
public void applyAssertions(List commandList) {
+ getProject().log("Applying assertions",Project.MSG_DEBUG);
Assertions clause = getFinalReference();
//do the system assertions
if (Boolean.TRUE.equals(clause.enableSystemAssertions)) {
+ getProject().log("Enabling system assertions",
Project.MSG_DEBUG);
commandList.add("-enablesystemassertions");
} else if (Boolean.FALSE.equals(clause.enableSystemAssertions)) {
+ getProject().log("disabling system assertions",
Project.MSG_DEBUG);
commandList.add("-disablesystemassertions");
}
@@ -209,6 +213,7 @@
while (it.hasNext()) {
BaseAssertion assertion = (BaseAssertion) it.next();
String arg = assertion.toCommand();
+ getProject().log("adding assertion "+arg, Project.MSG_DEBUG);
commandList.add(arg);
}
}
1.20 +1 -1
ant/src/main/org/apache/tools/ant/types/defaults.properties
Index: defaults.properties
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/types/defaults.properties,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- defaults.properties 21 Sep 2003 22:30:44 -0000 1.19
+++ defaults.properties 23 Sep 2003 06:31:46 -0000 1.20
@@ -19,4 +19,4 @@
zipfileset=org.apache.tools.ant.types.ZipFileSet
scriptfilter=org.apache.tools.ant.types.optional.ScriptFilter
propertyset=org.apache.tools.ant.types.PropertySet
-assertion=org.apache.tools.ant.types.Assertion
\ No newline at end of file
+assertions=org.apache.tools.ant.types.Assertions
1.1 ant/src/etc/testcases/types/assertions.xml
Index: assertions.xml
===================================================================
<?xml version="1.0"?>
<project name="assertions" basedir="." default="init">
<property name="build.dir" location="assertions/build"/>
<property name="src.dir" location="assertions"/>
<property name="classname" value="AssertionTest"/>
<path id="assert.classpath">
<pathelement location="${build.dir}"/>
</path>
<target name="setup" >
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.dir}"
includes="*.java"
source="1.4"
debug="true"
destdir="${build.dir}"
/>
</target>
<target name="teardown" >
<delete dir="${build.dir}"/>
</target>
<!-- if per-class assertions work, this run asserts -->
<target name="test-classname" depends="setup">
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions enablesystemassertions="true">
<enable class="${classname}" />
</assertions>
</java>
</target>
<!-- if package works, this run asserts -->
<target name="test-package" depends="setup">
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions enableSystemAssertions="false" >
<enable package="..." />
</assertions>
</java>
</target>
<!-- this test should run the app successfully -->
<target name="test-empty-assertions" depends="setup">
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions/>
</java>
</target>
<!-- this test should run the app successfully -->
<target name="test-disable" depends="setup">
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions enableSystemAssertions="false" >
<enable package="..." />
<disable class="${classname}" />
</assertions>
</java>
</target>
<!-- repeated settigns result in the last declaration winning
except that the rule 'classes win over packages takes priority
this run will assert -->
<target name="test-override" depends="setup">
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions enableSystemAssertions="false" >
<enable package="..." />
<disable class="${classname}" />
<enable class="${classname}" />
<disable package="..." />
</assertions>
</java>
</target>
<!-- repeated settigns result in the last declaration winning;
this run will not assert -->
<target name="test-override2" depends="setup">
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions enableSystemAssertions="false" >
<enable package="..." />
<enable class="${classname}" />
<disable class="${classname}" />
</assertions>
</java>
</target>
<!-- if references work, this run asserts -->
<target name="test-references">
<assertions id="project.assertions" >
<enable package="org.apache.test" />
<disable package="org.apache.log4j"/>
<enable package="..."/>
</assertions>
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions refid="project.assertions"/>
</java>
</target>
<!-- when fork=false; we need to reject the construct -->
<target name="test-nofork" depends="setup">
<java fork="false" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions enablesystemassertions="true">
<enable class="${classname}" />
</assertions>
</java>
</target>
<!-- this throws a build error -->
<target name="test-multiple-assertions" depends="setup">
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions enablesystemassertions="true">
<enable class="${classname}" />
</assertions>
<assertions/>
</java>
</target>
<!-- should throw a build exception -->
<target name="test-reference-abuse" depends="setup">
<assertions id="project.assertions2" >
<enable package="org.apache.test" />
<disable package="org.apache.log4j"/>
<enable package="..."/>
</assertions>
<java fork="true" failonerror="true"
classname="${classname}"
classpathref="assert.classpath">
<assertions refid="project.assertions2">
<disable class="${classname}" />
</assertions>
</java>
</target>
</project>
1.1
ant/src/testcases/org/apache/tools/ant/types/AssertionsTest.java
Index: AssertionsTest.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "Ant" and "Apache Software Foundation"
* must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.types;
import org.apache.tools.ant.BuildFileTest;
/**
* test assertion handling
*/
public class AssertionsTest extends BuildFileTest {
public AssertionsTest(String name) {
super(name);
}
protected void setUp() throws Exception {
configureProject("src/etc/testcases/types/assertions.xml");
}
protected void tearDown() throws Exception {
executeTarget("teardown");
}
/**
* runs a test and expects an assertion thrown in forked code
* @param target
*/
protected void expectAssertion(String target) {
expectBuildExceptionContaining(target,
"assertion not thrown in "+target,
"Java returned: 1");
}
public void testClassname() {
expectAssertion("test-classname");
}
public void testPackage() {
expectAssertion("test-package");
}
public void testEmptyAssertions() {
executeTarget("test-empty-assertions");
}
public void testDisable() {
executeTarget("test-disable");
}
public void testOverride() {
expectAssertion("test-override");
}
public void testOverride2() {
executeTarget("test-override2");
}
public void testReferences() {
expectAssertion("test-references");
}
public void testMultipleAssertions() {
expectBuildExceptionContaining("test-multiple-assertions",
"multiple assertions rejected",
"Only one assertion declaration is allowed");
}
public void testReferenceAbuse() {
expectBuildExceptionContaining("test-reference-abuse",
"reference abuse rejected",
"You must not specify more than one attribute when using
refid");
}
public void testNofork() {
expectLogContaining("test-nofork",
"Assertion statements are currently ignored in non-forked
mode");
}
}
1.1 ant/src/etc/testcases/types/assertions/AssertionTest.java
Index: AssertionTest.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "Ant" and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
/**
* this is an assertion tester
*/
public class AssertionTest {
public static void main(String args[]) {
assert true == false : "there exist no facts that are both true
and false";
System.out.println("Assertions are disabled");
}
}
1.5 +1 -1
ant/src/main/org/apache/tools/ant/taskdefs/optional/jsp/Jasper41Mangler.java
Index: Jasper41Mangler.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/jsp/Jasper41Mangler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Jasper41Mangler.java 19 Jul 2003 11:20:18 -0000 1.4
+++ Jasper41Mangler.java 23 Sep 2003 06:31:46 -0000 1.5
@@ -97,7 +97,7 @@
modifiedClassName.append(mangleChar(ch));
}
}
- return modifiedClassName.toString();
+ return modifiedClassName.toString()+".java";
}
/**
1.78 +8 -1 ant/src/main/org/apache/tools/ant/taskdefs/Java.java
Index: Java.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Java.java,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- Java.java 21 Sep 2003 20:20:03 -0000 1.77
+++ Java.java 23 Sep 2003 06:31:46 -0000 1.78
@@ -156,6 +156,10 @@
throw new BuildException("You have used an attribute which is "
+ "not compatible with spawn");
}
+ if (cmdl.getAssertions() != null && !fork) {
+ log("Assertion statements are currently ignored in non-forked
mode");
+ }
+
if (fork) {
if (perm != null) {
log("Permissions can not be set this way in forked mode.",
Project.MSG_WARN);
@@ -591,7 +595,10 @@
* @since Ant 1.6
* @param asserts assertion set
*/
- public void setAssertions(Assertions asserts) {
+ public void addAssertions(Assertions asserts) {
+ if(cmdl.getAssertions() != null) {
+ throw new BuildException("Only one assertion declaration is
allowed");
+ }
cmdl.setAssertions(asserts);
}
1.84 +5 -2
ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
Index: JUnitTask.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -r1.83 -r1.84
--- JUnitTask.java 19 Sep 2003 09:18:16 -0000 1.83
+++ JUnitTask.java 23 Sep 2003 06:31:46 -0000 1.84
@@ -568,7 +568,10 @@
* @since Ant 1.6
* @param asserts assertion set
*/
- public void setAssertions(Assertions asserts) {
+ public void addAssertions(Assertions asserts) {
+ if (commandline.getAssertions() != null) {
+ throw new BuildException("Only one assertion declaration is
allowed");
+ }
commandline.setAssertions(asserts);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]