alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Ant example source code file (assertions.xml)

This example Ant source code file (assertions.xml) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Ant tags/keywords

assertionmain, assertionmain, assertiontest, assertiontest, this, this

The assertions.xml source code

<?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="AssertionMain"/>
  <property name="test.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>    
  
    
  <target name="test-junit" depends="setup">
    <junit fork="true" 
      haltonerror="true" haltonfailure="true"
      >
      <classpath>
        <path refid="assert.classpath"/>
      </classpath>
      <formatter type="plain"     usefile="false"/>
      <assertions >
        <enable class="${test.classname}" />
      </assertions> 
      <test name="${test.classname}"/>
    </junit>
  </target>
    
  <!-- This is here to show that setting it as a property works
  so there is some defect in pass-on of assertions that
  is causing the problem -->
  <target name="test-junit-manual-setup" depends="setup">
    <junit fork="true" 
      haltonerror="true" haltonfailure="true"
      >
      <classpath>
        <path refid="assert.classpath"/>
      </classpath>
      <formatter type="plain"     usefile="false"/>
      <test name="${test.classname}"/>
      <jvmarg value="-ea:AssertionTest"/>
    </junit>
  </target>  
  
</project>

Other Ant examples (source code examples)

Here is a short list of links related to this Ant assertions.xml source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.