| <?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="FlexPMD Flex Cover Report ANT build report utility" basedir="" default="report"> | 
 |  | 
 | 	<!-- set up the build environment --> | 
 | 	<property file="build.properties" /> | 
 | 	<property file="flexcover.properties" /> | 
 | 	<property environment="env" /> | 
 |  | 
 | 	<property name="flexpmd.version" value="1.0-RC1" /> | 
 |  | 
 | 	<!-- get the hostname of the machine we're running on --> | 
 | 	<property name="env.HOSTNAME" value="${env.COMPUTERNAME}" /> | 
 |  | 
 | 	<!-- include the flex target definitions --> | 
 | 	<taskdef resource="flexTasks.tasks" classpath="${FLEX_TASKS}" /> | 
 |  | 
 | 	<!-- Define the FlexUnit task. --> | 
 | 	<taskdef resource="com/adobe/ac/ant/tasks/tasks.properties" classpath="${ant.lib}/FlexUnitAntTasks.jar" /> | 
 |  | 
 | 	<!-- uncomment if you need to see what properties ant is picking up --> | 
 | 	<echoproperties/> | 
 |  | 
 | 	<!-- the main build target the build machine uses, build, test, report, nag --> | 
 | 	<target name="run.prepare"  | 
 | 		depends="clean,getInstrumentationMetadata,compileAndRunTests,cleanUp"  | 
 | 		description="cleans, compiles and tests the app, builds a non-release package." /> | 
 |  | 
 | 	 | 
 | 	<target name="report"> | 
 | 		<antcall target="run.prepare"> | 
 |             <param name="testName" value="TestRunner" /> | 
 |         </antcall> | 
 | 	</target> | 
 | 	 | 
 | 	<target name="run"> | 
 | 		<antcall target="run.prepare"> | 
 |             <param name="testName" value="TestViewRunner" /> | 
 |         </antcall> | 
 | 	</target> | 
 |  | 
 | 	<!-- usethis target to test locally --> | 
 | 	<target name="compileAndRunTests" depends="clean,compileTest,runTest"  | 
 | 		description="compile and run the test suite and code coverage tool" /> | 
 |  | 
 | 	<target name="getInstrumentationMetadata"  | 
 | 		description="compiles the app to get metadata about classes needed for code coverage" depends="clean"> | 
 |  		<compile /> | 
 | 	</target> | 
 |  | 
 | 	<target name="cleanUp" description="removes test harness and temp folder from build directory"> | 
 | 		<delete file="${build}/${testAppXML}"> | 
 | 		</delete> | 
 | 		<delete file="${build}/${testSWF}"> | 
 | 		</delete> | 
 | 	</target> | 
 |  | 
 | 	<property name="coverageMetadata-path" location="${coverageMetadata}" /> | 
 | 	<property name="coverageReport-path" location="${coverageReport}" /> | 
 | 	<property name="coverageCVR-path" location="${coverageCVR}" /> | 
 | 	<property name="coverageXML-path" location="${coverageXML}" /> | 
 |  | 
 | 	<target name="launchCodeCoverageApp" description="launches to code coverage listener app"> | 
 | 		<echo>'${coverageMetadata-path}' -output '${coverageCVR-path}' -emma-report '${coverageReport-path}'</echo> | 
 | 		<launchApp appXML="${coverageXML-path}" additionalArgs="${coverageMetadata-path} -output ${coverageCVR-path} -emma-report ${coverageReport-path}" /> | 
 | 	</target> | 
 |  | 
 | 	<macrodef name="launchApp"> | 
 | 		<attribute name="appXML" /> | 
 | 		<attribute name="additionalArgs" /> | 
 | 		<attribute name="spawn" default="true" /> | 
 | 		<sequential> | 
 | 			<pathconvert property="xmlPath" dirsep="${dirSep}"> | 
 | 				<path location="@{appXML}" /> | 
 | 			</pathconvert> | 
 | 			<echo>launching adl with ${xmlPath}</echo> | 
 | 			<exec executable="${adl}" spawn="@{spawn}"> | 
 | 				<arg line="'${xmlPath}'" /> | 
 | 				<arg line="--" /> | 
 | 				<arg line="@{additionalArgs}" /> | 
 | 			</exec> | 
 | 		</sequential> | 
 | 	</macrodef> | 
 |  | 
 | 	<macrodef name="compile"> | 
 | 		<attribute name="srcFile" default="${src}/${mainAppMXML}" /> | 
 | 		<attribute name="outputFile" default="${temp}/${mainSWF}" /> | 
 | 		<sequential> | 
 | 			<mxmlc file="@{srcFile}" output="@{outputFile}" debug="${debugMode}"  | 
 | 				allow-source-path-overlap="true" show-actionscript-warnings="false"  | 
 | 				keep-generated-actionscript="false" maxmemory="1024m"> | 
 |  | 
 | 				<define name="CONFIG::debugging" value="false" /> | 
 |  | 
 | 				<load-config filename="${flexConfig}" /> | 
 |  | 
 | 				<!-- path to our source --> | 
 | 				<source-path path-element="${src}" /> | 
 | 				<source-path path-element="${src_test}" /> | 
 | 				<source-path path-element="${src_locale}" /> | 
 | 				<source-path path-element="${testClassPath}" /> | 
 | 				<source-path path-element="${resourceBundles}" /> | 
 | 				<source-path path-element="${flexUnitSrc}" /> | 
 |  | 
 | 				<!-- core flex libraries --> | 
 | 				<compiler.library-path dir="${flexcover.sdk}/frameworks" append="true"> | 
 | 					<include name="libs" /> | 
 | 				</compiler.library-path> | 
 | 				<compiler.library-path dir="${flexcover.sdk}/frameworks/locale" append="true"> | 
 | 					<include name="${LOCALE}" /> | 
 | 				</compiler.library-path> | 
 |  | 
 | 				<!-- air libraries (why need to declare separate)? --> | 
 | 				<compiler.library-path dir="${flexcover.sdk}/frameworks" append="true"> | 
 | 					<include name="libs/air" /> | 
 | 				</compiler.library-path> | 
 |  | 
 | 				<!-- local libraries --> | 
 | 				<compiler.library-path dir="." append="true"> | 
 | 					<include name="libs" /> | 
 | 					<include name="${ant.lib}" /> | 
 | 				</compiler.library-path> | 
 | 			</mxmlc> | 
 | 		</sequential> | 
 | 	</macrodef> | 
 |  | 
 |  | 
 | 	<!-- compile the unit tests --> | 
 | 	<target name="compileTest" description="compile the the test suite"> | 
 | 		<compile srcFile="${src}/${testAppMXML}" outputFile="${build}/${testSWF}" /> | 
 | 		<generateAppXML srcFile="${src}/${testAppXML}" destFile="${build}/${testAppXML}" initialContent="${testSWF}" /> | 
 | 	</target> | 
 |  | 
 | 	<!-- create the application XML file --> | 
 | 	<macrodef name="generateAppXML"> | 
 | 		<attribute name="srcFile" /> | 
 | 		<attribute name="destFile" /> | 
 | 		<attribute name="initialContent" /> | 
 | 		<sequential> | 
 | 			<copy file="@{srcFile}" tofile="@{destFile}" /> | 
 | 			<replace file="@{destFile}" token="${initialContentToken}" value="@{initialContent}" /> | 
 | 			<echo>setting build number to: ${versionNumber}</echo> | 
 | 			<replace file="@{destFile}" token="%VERSION%" value="${versionNumber}" /> | 
 | 		</sequential> | 
 | 	</macrodef> | 
 |  | 
 | 	<!-- Clears out the build directory --> | 
 | 	<target name="clean"> | 
 | 		<echo message="Removing build directory contents" description="removes build related directory contents" /> | 
 | 	</target> | 
 | 	 | 
 | 	<target name="runTest" description="runs the test harness and coverage tool" depends="clean,compileTest"> | 
 | 		<parallel timeout="120000"> | 
 | 			<sequential> | 
 | 				<antcall target="launchCodeCoverageApp"> | 
 | 				</antcall> | 
 | 				<sleep seconds="15" /> | 
 | 				<launchApp appXML="${build}/${testAppXML}" additionalArgs="'${testOutputDir}'" spawn="no" /> | 
 | 				<airflexunit reportDir="${testOutputDir}" haltonfailure="true" /> | 
 | 				<echo>finished running tests </echo> | 
 | 				<waitfor> | 
 | 					<available file="${coverageCVR-path}" /> | 
 | 				</waitfor> | 
 | 				<echo>found coverage CVR </echo> | 
 | 				<waitfor> | 
 | 					<available file="${coverageReport-path}" /> | 
 | 				</waitfor> | 
 | 				<echo>found coverage report</echo> | 
 | 			</sequential> | 
 | 		</parallel> | 
 | 	</target> | 
 |  | 
 |  | 
 | </project> |