+
+ <!-- DIST -->
+ <target name="dist" depends="dist-bin,dist-src,dist-src-test">
+ <echo>Distribution ${build.version} (${build.source}) built into directory ${jar.dir}</echo>
+ </target>
+
+
+ <!-- CHECK -->
+ <target name="check" depends="checktodo,checkascii"/>
+
+ <!-- CHECK TODOs -->
+ <target name="todo" depends="checktodo"/>
+ <target name="checktodo">
+ <tempfile property="todo.file" prefix="checktodo-"/>
+ <echo>Checking project for FIXMEs.</echo>
+ <concat destfile="${todo.file}">
+ <fileset dir="${src.dir}">
+ <include name="**/*.java"/>
+ </fileset>
+ <fileset dir="${src-test.dir}">
+ <include name="**/*.java"/>
+ </fileset>
+ <filterchain>
+ <linecontainsregexp>
+ <regexp pattern="(FIXME|TODO:.*CRITICAL)"/>
+ </linecontainsregexp>
+ </filterchain>
+ </concat>
+ <loadfile srcfile="${todo.file}" property="criticaltodos"/>
+ <delete file="${todo.file}"/>
+ <fail if="criticaltodos">CRITICAL TODOs exist in project:
+${criticaltodos}</fail>
+ <echo>No critical TODOs in project.</echo>
+ </target>
+
+
+ <!-- CHECK TODOs -->
+ <target name="ascii" depends="checkascii"/>
+ <target name="checkascii">
+ <tempfile property="ascii.file" prefix="checkascii-"/>
+ <echo>Checking project for non-ASCII characters.</echo>
+ <concat destfile="${ascii.file}">
+ <fileset dir="${src.dir}">
+ <include name="**/*.java"/>
+ </fileset>
+ <fileset dir="${src-test.dir}">
+ <include name="**/*.java"/>
+ </fileset>
+ <filterchain>
+ <linecontainsregexp>
+ <regexp pattern="\P{ASCII}"/>
+ </linecontainsregexp>
+ </filterchain>
+ </concat>
+ <loadfile srcfile="${ascii.file}" property="nonascii"/>
+ <delete file="${ascii.file}"/>
+ <fail if="nonascii">Non-ASCII characters exist in project:
+${nonascii}</fail>
+ <echo>No non-ASCII characters in project.</echo>
+ </target>
+
+
+ <!-- Unit tests -->
+ <target name="unittest" description="Execute unit tests" depends="build">
+ <echo>Building unit tests</echo>
+ <mkdir dir="${build-test.dir}"/>
+ <javac debug="true" srcdir="${src-test.dir}" destdir="${build-test.dir}" classpathref="test-classpath"/>
+
+ <echo>Running unit tests</echo>
+ <mkdir dir="tmp/rawtestoutput"/>
+ <junit fork="yes" forkmode="once" printsummary="false" failureproperty="junit.failure">
+ <classpath>
+ <path refid="test-classpath"/>
+ <path location="${basedir}"/>
+ </classpath>
+ <batchtest todir="tmp/rawtestoutput">
+ <fileset dir="${build-test.dir}">
+ <include name="**/Test*.class" />
+ <include name="**/*Test.class" />
+ <exclude name="**/*$*.class" />
+ <exclude name="Test.class" />
+ </fileset>
+ <formatter type="xml"/>
+ </batchtest>
+ </junit>
+ <junitreport todir="tmp">
+ <fileset dir="tmp/rawtestoutput"/>
+ <report todir="tmp/test-reports"/>
+ </junitreport>
+ <fail if="junit.failure" message="Unit test(s) failed. See report in ${basedir}/tmp/test-reports/index.html"/>
+ <echo>
+ Unit tests passed successfully.
+ </echo>
+ </target>
+