<?xml version="1.0" encoding="UTF-8"?>

<project name="testsuite" default="run" basedir=".">
	<!-- The property ${eclipse-home} should be passed into this script -->
	<!-- Set a meaningful default value for when it is not. -->
	<property name="eclipse-home" value="${basedir}\..\.."/>

	<!-- sets the properties eclipse-home, and library-file -->
	<property name="plugin-name" value="org.eclipse.jdt.ui.tests.refactoring"/>
	<property name="library-file"
            value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>

	<!-- This target holds all initialization code that needs to be done for -->
	<!-- all tests that are to be run. Initialization for individual tests -->
	<!-- should be done within the body of the suite target. -->
	<target name="init">
		<tstamp/>
		<delete>
			<fileset dir="${eclipse-home}" includes="org*.xml"/>
		</delete>
	</target>

	<!-- This target defines the tests that need to be run. -->
	<target name="suite">
		<property name="refactoring-folder" 
              value="${eclipse-home}/refactoring_folder"/>
		<delete dir="${refactoring-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="data-dir" value="${refactoring-folder}"/>
			<property name="plugin-name" value="${plugin-name}"/>
			<property name="classname" 
                value="org.eclipse.jdt.ui.tests.all.AllAllTests"/>
		</ant>
	</target>

	<!-- performance test target -->
	<target name="performance-suite">
		<property name="jdt-ui-refactoring-performance-folder" value="${eclipse-home}/jdt_ui_refactoring_performance_folder"/>
		<property name="data-dir" value="${jdt-ui-refactoring-performance-folder}"/>
		<property name="plugin-name" value="${plugin-name}"/>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenamePackagePerfTests1"/>
		</ant>
		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenamePackagePerfTests2"/>
		</ant>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfAcceptanceTests"/>
		</ant>
		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfTests1"/>
		</ant>
		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameTypePerfTests2"/>
		</ant>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodPerfTests1"/>
		</ant>
		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodPerfTests2"/>
		</ant>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodWithOverloadPerfTests"/>
		</ant>
		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.RenameMethodWithHidingPerfTests"/>
		</ant>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveCompilationUnitPerfTests1"/>
		</ant>
		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveCompilationUnitPerfTests2"/>
		</ant>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveStaticMembersPerfTests1"/>
		</ant>
		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true"/>
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.reorg.MoveStaticMembersPerfTests2"/>
		</ant>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true" />
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.type.ExtractInterfacePerfAcceptanceTests" />
		</ant>

		<delete dir="${jdt-ui-refactoring-performance-folder}" quiet="true" />
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="classname" value="org.eclipse.jdt.ui.tests.refactoring.type.ExtractInterfaceHeapAcceptanceTests" />
		</ant>
	</target>

	<!-- This target holds code to cleanup the testing environment after -->
	<!-- after all of the tests have been run. You can use this target to -->
	<!-- delete temporary files that have been created. -->
	<target name="cleanup">
	</target>

	<!-- This target runs the test suite. Any actions that need to happen -->
	<!-- after all the tests have been run should go here. -->
	<target name="run" depends="init,suite,cleanup">
		<ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
			<property name="includes" value="org*.xml"/>
			<property name="output-file" value="${plugin-name}.xml"/>
		</ant>
	</target>


	<!-- This target runs the performance test suite. Any actions that need to happen -->
	<!-- after all the tests have been run should go here. -->
	<target name="performance" depends="init,performance-suite,cleanup">
		<ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
			<property name="includes" value="org*.xml"/>
			<property name="output-file" value="${plugin-name}.xml"/>
		</ant>
	</target>
</project>
