blob: 82384552ccd3c6d8ed3b7ea3cd1d7ca65c0c572c [file] [log] [blame]
<?xml version="1.0" encoding="utf-8" ?>
<!--
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
* distributed with this work for additional information *
* regarding copyright ownership. The ASF licenses this file *
* to you under the Apache License, Version 2.0 (the *
* "License"); you may not use this file except in compliance *
* with the License. You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, *
* software distributed under the License is distributed on an *
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
* KIND, either express or implied. See the License for the *
* specific language governing permissions and limitations *
* under the License. *
-->
<project name="etch-tests" basedir="." default="help">
<description>Functional Tests</description>
<property name="Etch.basedir" location="${basedir}/.." />
<import file="${Etch.basedir}/build-support/etch.includes.xml" />
<target name="help"><echo>Please select a target...</echo></target>
<!-- import etch task -->
<taskdef
onerror="report"
resource="org/apache/etch/tools/ant/etch.xml"
classpath="${Etch.HOME}/lib/${etch-ant-task.jar}" />
<!-- set properties -->
<property name="target" location="${basedir}/target" />
<property name="src" location="${basedir}/src" />
<property name="bin" location="${target}/bin" />
<property name="generated-sources" location="${target}/generated-sources/" />
<property name="classes" location="${target}/classes" />
<property name="test-results" location="${target}/test-results" />
<property name="nunit-results" location="${target}/nunit-results" />
<!-- macros -->
<macrodef name="etch-test">
<attribute name="home" default="${Etch.HOME}" />
<attribute name="binding" />
<attribute name="file" />
<attribute name="what" default="both, intf" />
<attribute name="outputDir" default="${generated-sources}/main/etch/@{binding}" />
<attribute name="templateOutputDir" default="${src}/main/@{binding}" />
<element name="etchelements" implicit="true" optional="true" />
<sequential>
<etch home="@{home}" binding="@{binding}" outputDir="@{outputDir}" what="@{what}" file="@{file}" >
<etchelements />
</etch>
</sequential>
</macrodef>
<macrodef name="generate-sources">
<attribute name="binding" />
<sequential>
<!-- generate sources -->
<mkdir dir="${generated-sources}/main/etch/@{binding}" />
<etch-test binding="@{binding}" file="${src}/main/etch/Async.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Bar.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Baz.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/BigIdl.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Closing.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Cuae.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Foo.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Inheritance.etch" />
<etch-test binding="@{binding}" what="all,force" file="${src}/main/etch/Test1.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Test2.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Test3.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Test4.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Test6.etch" />
<etch-test binding="@{binding}" what="all,force" file="${src}/main/etch/TestIncludes.etch" />
<etch-test binding="@{binding}" file="${src}/main/etch/Types.etch" />
<!-- negative tests -->
<!-- <etch-test binding="@{binding}" file="${src}/main/etch/Test5.etch" /> -->
<!-- <etch-test binding="@{binding}" file="${src}/main/etch/TestReservedWords.etch" /> -->
</sequential>
</macrodef>
<!-- initialize -->
<target name="init" >
<mkdir dir="${target}" />
<mkdir dir="${bin}" />
<mkdir dir="${generated-sources}" />
<mkdir dir="${classes}" />
<mkdir dir="${test-results}" />
<mkdir dir="${nunit-results}" />
</target>
<!-- ############ -->
<!-- binding-java -->
<!-- ############ -->
<target name="build-java-if" depends="build-java-then, build-java-else" >
</target>
<target name="build-java-then" depends="build-java" if="is-binding-java-available" >
<echo message="binding-java available" />
</target>
<target name="build-java-else" unless="is-binding-java-available" >
<echo message="No binding-java available" />
</target>
<target name="test-java-if" depends="test-java-then, test-java-else" >
</target>
<target name="test-java-then" depends="test-java" if="is-binding-java-available" >
<echo message="binding-java available" />
</target>
<target name="test-java-else" unless="is-binding-java-available" >
<echo message="No binding-java available" />
</target>
<!-- binding-java build -->
<target name="generate-java" if="is-binding-java-available">
<generate-sources binding="java" />
</target>
<!-- binding-java clover -->
<target name="init-java-sources-for-clover" depends="init-java-sources-for-clover-if, init-java-sources-for-clover-then">
</target>
<target name="init-java-sources-for-clover-if" >
<condition property="do-init-java-sources-for-clover">
<and>
<isset property="is-binding-java-available" />
<isset property="Clover.enabled" />
</and>
</condition>
</target>
<target name="init-java-sources-for-clover-then" if="do-init-java-sources-for-clover">
<initialize-clover suffix="etchtests" >
<fileset dir="${src}/main/java" >
<include name="**/*.java" />
</fileset>
<fileset dir="${generated-sources}/main/etch/java" >
<include name="**/*.java" />
<exclude name="**/*BigIdl*.java" />
</fileset>
<testsources dir="${src}/test/java" >
<include name="**/*.java" />
</testsources>
</initialize-clover>
</target>
<target name="build-java" depends="generate-java, init-java-sources-for-clover" if="is-binding-java-available" >
<!-- compile sources -->
<mkdir dir="${classes}" />
<javac target="1.5" destdir="${classes}">
<src path="${generated-sources}/main/etch/java" />
<src path="${src}/main/java" />
<src path="${src}/test/java" />
<classpath>
<pathelement location="${Etch.HOME}/binding-java/lib/${etch-java-runtime.jar}" />
<pathelement location="${Etch.dependency.junit.jar}" />
<pathelement location="${Etch.HOME}/lib/${etch-compiler.jar}" />
</classpath>
</javac>
</target>
<target name="test-java" depends="build-java" if="is-binding-java-available" >
<!-- Run Unit Tests -->
<junit printsummary="yes" haltonfailure="no" dir="${classes}"
errorProperty="build.tests.fail" failureProperty="build.tests.fail">
<classpath>
<pathelement location="${classes}" />
<pathelement location="${Etch.HOME}/binding-java/lib/${etch-java-runtime.jar}" />
<pathelement location="${Etch.dependency.junit.jar}" />
<pathelement location="${Etch.HOME}/lib/${etch-compiler.jar}" />
<!-- TODO: remove if clover not available -->
<pathelement location="${Etch.dependency.clover.jar}"/>
</classpath>
<formatter type="xml"/>
<batchtest fork="true" todir="${test-results}">
<fileset dir="${src}/test/java">
<include name="**/Test*.java" />
<!-- TODO debug Test*Xml failures -->
<exclude name="**/Test*Xml.java" />
</fileset>
</batchtest>
</junit>
</target>
<!-- ############# -->
<!-- binding-charp -->
<!-- ############# -->
<target name="generate-csharp" if="is-binding-csharp-available" >
<generate-sources binding="csharp" />
</target>
<target name="build-csharp-if" depends="build-csharp-then, build-csharp-else" >
</target>
<target name="build-csharp-then" depends="build-csharp" if="is-binding-csharp-available" >
<echo message="binding-csharp available" />
</target>
<target name="build-csharp-else" unless="is-binding-csharp-available" >
<echo message="No binding-csharp available" />
</target>
<target name="test-csharp-if" depends="test-csharp-then, test-csharp-else" >
</target>
<target name="test-csharp-then" depends="test-csharp" if="is-binding-csharp-available" >
<echo message="binding-csharp available" />
</target>
<target name="test-csharp-else" unless="is-binding-csharp-available" >
<echo message="No binding-csharp available" />
</target>
<!-- binding-charp build-->
<target name="build-csharp" depends="generate-csharp, build-tests-csharp-dotnet,build-tests-csharp-mono" />
<target name="build-tests-csharp-dotnet" depends="build-tests-csharp-dotnet-if, build-tests-csharp-dotnet-then">
</target>
<target name="build-tests-csharp-dotnet-if">
<condition property="do-build-tests-csharp-dotnet" >
<and>
<isset property="is-binding-csharp-available" />
<isset property="USE.dotnet" />
</and>
</condition>
</target>
<target name="build-tests-csharp-dotnet-then" if="do-build-tests-csharp-dotnet" >
<msbuild buildfile="${src}/test/csharp/TestsProj/TestsProj.csproj">
<property name="Configuration" value="${Etch.build.target}" />
</msbuild>
</target>
<target name="build-tests-csharp-mono" depends="build-tests-csharp-mono-if, build-tests-csharp-mono-then">
</target>
<target name="build-tests-csharp-mono-if">
<condition property="do-build-tests-csharp-mono" >
<and>
<isset property="is-binding-csharp-available" />
<isset property="USE.mono" />
</and>
</condition>
</target>
<target name="build-tests-csharp-mono-then" if="do-build-tests-csharp-mono" >
<echo message="TODO: build w/ mono" />
</target>
<target name="test-csharp" depends="build-csharp" if="is-binding-csharp-available" >
<mkdir dir="${nunit-results}" />
<nunit xmlout="${nunit-results}/NUnitResults.xml">
<testassembly name="${src}/test/csharp/TestsProj/bin/${Etch.build.target}/Tests.dll" />
</nunit>
<xslt style="${Etch.buildSupportDirectory}/NUnitToJUnit.xsl"
in="${nunit-results}/NUnitResults.xml" out="${test-results}/TEST-NUnitResults.xml" />
</target>
<!-- ########### -->
<!-- binding-xml -->
<!-- ########### -->
<target name="generate-xml" if="is-binding-xml-available" >
<generate-sources binding="xml" />
</target>
<target name="build-xml-if" depends="build-xml-then, build-xml-else" >
</target>
<target name="build-xml-then" depends="build-xml" if="is-binding-xml-available" >
<echo message="binding-xml available" />
</target>
<target name="build-xml-else" unless="is-binding-xml-available" >
<echo message="No binding-xml available" />
</target>
<target name="test-xml-if" depends="test-xml-then, test-xml-else" >
</target>
<target name="test-xml-then" depends="test-xml" if="is-binding-xml-available" >
<echo message="binding-xml available" />
</target>
<target name="test-xml-else" unless="is-binding-xml-available" >
<echo message="No binding-xml available" />
</target>
<!-- binding-xml build -->
<target name="build-xml" depends="generate-xml" if="is-binding-xml-available" >
</target>
<target name="test-xml" depends="build-xml" if="is-binding-xml-available" >
</target>
<!-- ########### -->
<!-- general -->
<!-- ########### -->
<!-- build sources -->
<target name="build" depends="init, build-java-if, build-csharp-if, build-xml-if" />
<!-- run unit tests -->
<target name="test" depends="build, test-java-if, test-csharp-if, test-xml-if" />
<!-- clean -->
<target name="clean">
<delete dir="${target}" quiet="true" />
<delete dir="${src}/test/csharp/TestsProj/obj" />
<delete dir="${src}/test/csharp/TestsProj/bin" />
</target>
</project>