<project name="user" default="build" basedir=".">
	<property name="gwt.root" location=".." />
	<property name="project.tail" value="user" />
	<import file="${gwt.root}/common.ant.xml" />

	<!--
		Default hosted mode test cases
	-->
	<fileset id="default.hosted.tests" dir="${javac.junit.out}" 
			 includes="${gwt.junit.testcase.includes}">
		<!--
			Requires manual testing, because it generates intentional failures.
		-->
		<exclude name="com/google/gwt/junit/client/ParallelRemoteTest.class" />

		<!--
			Causes a security dialog to popup and subsequently blocks testing
		-->
		<exclude name="com/google/gwt/user/client/ui/FormPanelTest.class" />

		<!--
			Need to confirm with JGW if this should still be disabled
		-->
		<exclude name="com/google/gwt/user/client/ui/HistoryTest.class" />

		<!--
			Safari regression:
				Testcase: testPositioning took 7.514 sec
				FAILED
					expected=225 actual=207
					junit.framework.AssertionFailedError:  expected=225 actual=207
		-->
		<exclude name="com/google/gwt/user/client/ui/AbsolutePanelTest.class" />
	</fileset>

	<!--
		Default web mode test cases
	-->
	<fileset id="default.web.tests" dir="${javac.junit.out}"
 		 	 includes="${gwt.junit.testcase.includes}">
		<!--
			Requires manual testing, because it generates intentional failures.
		-->
		<exclude name="com/google/gwt/junit/client/ParallelRemoteTest.class" />
		
		<!--
			Causes a security dialog to popup and subsequently blocks testing
		-->
		<exclude name="com/google/gwt/user/client/ui/FormPanelTest.class" />

		<!--
			Need to confirm with JGW if this should still be disabled
		-->
		<exclude name="com/google/gwt/user/client/ui/HistoryTest.class" />

		<!--
			Safari Failures:
				Testcase: testFunctionCaching took 0.112 sec
			        Caused an ERROR
					JavaScript RangeError exception: Maximum call stack size exceeded.
					com.google.gwt.core.client.JavaScriptException: JavaScript RangeError exception: Maximum call stack size exceeded.
			
			Linux Web Mode Failures:
				Testcase: testFunctionCaching took 1.004 sec
			        Caused an ERROR
					JavaScript InternalError exception: too much recursion
					com.google.gwt.core.client.JavaScriptException: JavaScript InternalError exception: too much recursion
		-->
		<exclude name="com/google/gwt/dev/jjs/test/HostedTest.class" />

		<!--
			Safari Failures:
				Testcase: testRecursion took 1.003 sec
			        Caused an ERROR
					JavaScript RangeError exception: Maximum call stack size exceeded.
					com.google.gwt.core.client.JavaScriptException: JavaScript RangeError exception: Maximum call stack size exceeded.
		-->
		<exclude name="com/google/gwt/dev/jjs/test/MethodCallTest.class" />

		<!--
			Safari Failures:
				Testcase: testJso took 1.005 sec
				        Caused an ERROR
				JavaScript RangeError exception: Maximum call stack size exceeded.
				com.google.gwt.core.client.JavaScriptException: JavaScript RangeError exception: Maximum call stack size exceeded.
		-->
		<exclude name="com/google/gwt/dev/jjs/test/MiscellaneousTest.class" />

		<!--
			Safari regression:
				Testcase: testPositioning took 7.514 sec
					FAILED
				expected=225 actual=207
				junit.framework.AssertionFailedError:  expected=225 actual=207
		-->
		<exclude name="com/google/gwt/user/client/ui/AbsolutePanelTest.class" />
	</fileset>

	<!-- Platform shouldn't matter here, just picking one -->
	<property.ensure name="gwt.dev.jar" location="${gwt.build.lib}/gwt-dev-linux.jar" />

	<target name="compile" description="Compile all class files">
		<mkdir dir="${javac.out}" />
		<gwt.javac>
			<classpath>
				<pathelement location="${gwt.tools.lib}/tomcat/servlet-api-2.4.jar" />
				<pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
				<pathelement location="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar" />
				<pathelement location="${gwt.dev.jar}" />
			</classpath>
		</gwt.javac>

		<!-- Build the BrowserManagerServer_Stub to allow remote browser testing -->
		<rmic base="${javac.out}"
                  classname="com.google.gwt.junit.remote.BrowserManagerServer"
                  stubversion="1.2"/>
	</target>

	<target name="compile.tests" description="Compiles the test code for this project">
		<mkdir dir="${javac.junit.out}" />
		<gwt.javac srcdir="test" destdir="${javac.junit.out}">
			<classpath>
				<pathelement location="${javac.out}" />
				<pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
				<pathelement location="${gwt.dev.staging.jar}" />
			</classpath>
		</gwt.javac>
	</target>

	<target name="build" depends="compile" description="Build and package this project">
		<mkdir dir="${gwt.build.lib}" />
		<gwt.jar>
			<fileset dir="src" excludes="**/package.html" />
			<fileset dir="super" excludes="**/package.html" />
			<fileset dir="${javac.out}" />
			<zipfileset src="${gwt.tools.lib}/tomcat/servlet-api-2.4.jar" />
		</gwt.jar>
	</target>

	<target name="checkstyle" description="Static analysis of source">
		<gwt.checkstyle>
			<fileset dir="src" />
			<fileset dir="super/com/google/gwt/emul" />
			<fileset dir="super/com/google/gwt/junit/translatable" />
		</gwt.checkstyle>
	</target>

	<target name="remoteweb-test" description="Run a remoteweb test at the given host and path">
		<echo message="Performing remote browser testing at rmi://${gwt.remote.browser}" />
		<gwt.junit test.args="-port ${gwt.junit.port} -out www -web -remoteweb rmi://${gwt.remote.browser}" test.out="${junit.out}/${gwt.remote.browser}" test.cases="default.web.tests" />
	</target>

	<target name="test.hosted" depends="compile, compile.tests" description="Run only hosted-mode tests for this project.">
		<gwt.junit test.args="-port ${gwt.junit.port}" test.out="${junit.out}/${build.host.platform}-hosted-mode" test.cases="default.hosted.tests" />
	</target>

	<target name="test.web" depends="compile, compile.tests" description="Run only web-mode tests for this project.">
		<gwt.junit test.args="-port ${gwt.junit.port} -out www -web" test.out="${junit.out}/${build.host.platform}-web-mode" test.cases="default.web.tests" />
	</target>

	<target name="test" depends="compile, compile.tests" description="Run hosted-mode, web-mode and remoteweb tests for this project.">
		<property.ensure name="distro.built" location="${gwt.dev.staging.jar}" message="GWT must be built before performing any tests.  This can be fixed by running ant in the ${gwt.root} directory." />

		<!--
			Run hosted and web mode tests for the platform on which this build
			is executing
		-->
		<parallel threadcount="1">
			<antcall target="test.hosted"/>

			<antcall target="test.web"/>

			<!--
				Run remote browser testing for the comma delimited list of remote browsers
			-->
			<foreach list="${gwt.remote.browsers}" delimiter="," parallel="true" maxThreads="1" target="remoteweb-test" param="gwt.remote.browser" />
		</parallel>
	</target>

	<target name="clean" description="Cleans this project's intermediate and output files">
		<delete dir="${project.build}" />
		<delete file="${project.lib}" />
	</target>

</project>
