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]