<!-- NOTE: if you get errors about not being able to load the junit
     task, try copying ../external/lib/junit.jar into your ant/lib
     directory.  This seems to be an ant or JDK 1.5 bug, not sure which.

     ALSO: If you are building under JDK1.5, you now MUST build under
     1.5 beta49 or later.  This is becuase in b49 Sun renamed some classes
     and methods in the doclet API.
-->


<project name='jam.tests' basedir='.' default='clean_all_test'>

<!-- Build file to build and run JAM tests -->

  <property name='src-jamtest' value='.' />
  <property name='jamroot' value='../' />
   
  <property name='build_dir' value='${jamroot}/../build/jam'/> <!--FIXME-->
  <property name='test_build_dir' value='${build_dir}/test'/>
  <property name='dummy_dir' value='${test_build_dir}/dummyclasses'/>
  <property name='junit_jar' value='${jamroot}/external/lib/junit.jar' />
  <property name='jsr173api_jar' value='../../build/lib/jsr173_api.jar'/>
  <property name='jsr173ri_jar' value='../../build/lib/jsr173_ri.jar'/>
  <property name='tidy_jar' value='../external/lib/tidy.jar'/>


  <path id='classpath' >

 <!-- use build/classes instead of xbean.jar for develpment convenience -->
    <pathelement path='${build_dir}/classes' />
    <pathelement path='${dummy_dir}' />
    <pathelement location='${test_build_dir}' />
    <pathelement location='${junit_jar}'/>
    <pathelement path='${java.class.path}' />

    <pathelement location='${tidy_jar}' />
    <pathelement location='${jsr173api_jar}' />
    <pathelement location='${jsr173ri_jar}' />

  </path>


  <property name='classpath-value' refid='classpath'/>

  <target name='clean_all_test' depends='clean,all,test'/>

  <target name='clean' >
    <delete dir='${test_build_dir}'/>
  </target>

  <target name='all' depends='compile,test' />

  <target name='compile' >
    <mkdir dir='${dummy_dir}'/>
    <javac
       source='1.5' target='1.5'
       srcdir='dummyclasses'
       destdir='${dummy_dir}'
       classpathref='classpath'
       includes='**/*.java'
     />
    <mkdir dir='${test_build_dir}'/>
    <javac
       srcdir='tests'
       destdir='${test_build_dir}'
       classpathref='classpath'
       includes='**/*.java'
     />
  </target>


  <target name="test">

<!-- why do these have to be separate?  something gets
     very confused if they're not
 -->

    <echo message=''/>
    <echo message=''/>
    <echo message='================= beginning javadoc tests ======== '/>

    <junit maxmemory="256m"     fork='true'
           dir='.'
           haltonerror='yes'
           haltonfailure='yes'
           showoutput='yes'
           printsummary='yes'>
      <classpath>
        <pathelement path='${classpath-value}'/> <!--ref no workie-->
      </classpath>
      <formatter type='plain' usefile='false'/>
      <test name='org.apache.xmlbeans.test.jam.SourcesJamTest'/>
      <!-- <test name='org.apache.xmlbeans.test.jam.ReflectJamTest'/>-->
      <!--parser work is on hold for the moment-->
      <!--<test name='org.apache.xmlbeans.test.jam.ParserJamTest'/>-->
    </junit>

    <echo message=''/>
    <echo message=''/>
    <echo message='================= beginning reflection tests ======== '/>


    <junit maxmemory="256m"     fork='true'
           dir='.'
           haltonerror='yes'
           haltonfailure='yes'
           showoutput='yes'
           printsummary='yes'>
      <classpath>
        <pathelement path='${classpath-value}'/> <!--ref no workie-->
      </classpath>
      <formatter type='plain' usefile='false'/>
      <test name='org.apache.xmlbeans.test.jam.ReflectJamTest'/>
      <!--parser work is on hold for the moment-->
      <!--<test name='org.apache.xmlbeans.test.jam.ParserJamTest'/>-->
    </junit>

  </target>

</project>