<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}">
		<!--
			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" />

		<include name="**/*Test.class" />
	</fileset>

	<!--
		Default web mode test cases
	-->
	<fileset id="default.web.tests" dir="${javac.junit.out}">
		<!--
			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" />

		<include name="**/*Test.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="unjar.deps" description="Unzips all dependency jars into the output folder">
		<gwt.unjar toollib="tomcat/servlet-api-2.4.jar" />
	</target>

	<target name="compile" depends="unjar.deps" description="Compile all class files">
		<mkdir dir="${javac.out}" />
		<gwt.javac>
			<classpath>
				<pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.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">
			<compilerarg value="-v1.2" />
		</rmic>
	</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.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}" />
			<fileset dir="${unjar.out}" />
		</gwt.jar>
	</target>

	<target name="checkstyle" description="Static analysis of source">
		<gwt.checkstyle>
			<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" 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">
			<gwt.junit test.args="-port ${gwt.junit.port}" test.out="${junit.out}/${build.host.platform}-hosted-mode" test.cases="default.hosted.tests" />

			<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" />

			<!--
				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>
