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]

Reply via email to