<?xml version="1.0"?>
<!-- Copyright (c) 2005  IBM Corporation and others.                       -->
<!-- All rights reserved. This program and the accompanying materials      -->
<!-- are made available under the terms of the Eclipse Public License v1.0 -->
<!-- which accompanies this distribution, and is available at              -->
<!-- http://www.eclipse.org/legal/epl-v10.html                             -->
<!--                                                                       -->
<!-- Contributors:                                                         -->
<!--    IBM Corporation - initial API and implementation                   -->

<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.gmf.tests.runtime.diagram.ui" />
	<property name="classname" value="org.eclipse.gmf.tests.runtime.diagram.ui.AllTests" />
	<property name="library-file" value="${eclipse-home}/dropins/eclipse/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="test-folder" value="${eclipse-home}/test_folder" />
		<delete dir="${test-folder}" quiet="true" />
		<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
			<property name="data-dir" value="${test-folder}" />
			<property name="plugin-name" value="${plugin-name}" />
			<property name="os" value="${baseos}" />
			<property name="ws" value="${basews}" />
			<property name="arch" value="${basearch}" />
			<property name="report" value="${plugin-name}" />
			<property name="classname" value="${classname}" />
			<property name="vmargs" value="-ea -XX:MaxPermSize=128m -Xmx1024m" />
		</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">
		<mkdir dir="${results}/consolelogs" />
		<copy failonerror="false" file="${eclipse-home}/results/${classname}.txt" tofile="${results}/consolelogs/${classname}_${platform}.metadata.log.txt" />
	</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="junits" 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>

</project>
