<project name="user" default="build" basedir=".">
  <property name="gwt.root" location=".." />
  <property name="project.tail" value="user" />
  <property name="test.args" value="" />
  <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}" />

  <fileset id="default.emma.tests" dir="${javac.junit.out}" 
       includes="**/EmmaClassLoadingTest.class" />
  
  <fileset id="default.hosted.emma.tests" dir="${javac.junit.out}" 
      excludes="**/CoverageTest.class" includes="**/*Test.class" />
  <!-- everything succeeds except CoverageTest.java. It fails due to a javac bug in sun/OpenJDK's Java. See the file contents for details -->
  
  <!--
    Default web mode test cases
  -->
  <fileset id="default.web.tests" dir="${javac.junit.out}"
         includes="${gwt.junit.testcase.includes}" />

  <!-- 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.5.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.tools.lib}/selenium/selenium-java-client-driver.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>

  <!--
    Compile test code for dev/core to pick up TypeOracleTestUtils and others.
  -->	
  <target name="compile.dev.core.tests" description="Compiles test dependencies in dev/core">
    <gwt.ant dir="../dev/core" target="compile.tests" />
  </target>
    
  <target name="compile.tests" depends="compile.dev.core.tests" description="Compiles the test code for this project">
    <mkdir dir="${javac.junit.out}" />
    <gwt.javac srcdir="test" excludes="com/google/gwt/langtest/**" destdir="${javac.junit.out}">
      <classpath>
        <pathelement location="${javac.out}" />
        <pathelement location="${gwt.build}/out/dev/core/bin-test" />
        <pathelement location="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar" />
        <pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
        <pathelement location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
        <pathelement location="${gwt.dev.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.5.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" if="gwt.remote.browsers">
    <echo message="Performing remote browser testing at ${gwt.remote.browsers}" />
    <gwt.junit test.args="${test.args} -out www -remoteweb ${gwt.remote.browsers}" test.out="${junit.out}/remoteweb" test.cases="default.web.tests" >
      <extraclasspaths>
        <pathelement location="${gwt.build}/out/dev/core/bin-test" />
      </extraclasspaths>
    </gwt.junit>
  </target>

  <target name="selenium-test" description="Run a remote test using Selenium RC test at the given host and path" if="gwt.selenium.hosts">
    <echo message="Performing remote browser testing using Selenium RC at ${gwt.selenium.hosts}" />
    <gwt.junit test.args="${test.args} -out www -selenium ${gwt.selenium.hosts}" test.out="${junit.out}/selenium" test.cases="default.web.tests" >
      <extraclasspaths>
        <pathelement location="${gwt.build}/out/dev/core/bin-test" />
      </extraclasspaths>
    </gwt.junit>
  </target>

  <target name="test.hosted.emma" depends="compile, compile.tests" description="Run all hosted-mode tests in emma mode.">
    <gwt.junit test.args="${test.args}" test.out="${junit.out}/${build.host.platform}-hosted-mode" test.cases="default.hosted.emma.tests" >
      <extraclasspaths>
        <pathelement location="${gwt.build}/out/dev/core/bin-test" />
        <pathelement location="${gwt.tools.redist}/emma/emma.jar" />
      </extraclasspaths>
    </gwt.junit>
  </target>

  <target name="test.hosted" depends="compile, compile.tests" description="Run only hosted-mode tests for this project.">
    <gwt.junit test.args="${test.args}" test.out="${junit.out}/${build.host.platform}-hosted-mode" test.cases="default.hosted.tests" >
      <extraclasspaths>
        <pathelement location="${gwt.build}/out/dev/core/bin-test" />
      </extraclasspaths>
    </gwt.junit>
    <gwt.junit test.args="${test.args}" test.out="${junit.out}/${build.host.platform}-hosted-mode-emma" test.cases="default.emma.tests" >
      <extraclasspaths>
        <pathelement location="${gwt.build}/out/dev/core/bin-test" />
        <pathelement location="${gwt.tools.redist}/emma/emma.jar" />
      </extraclasspaths>
    </gwt.junit> 
  </target>

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

  <target name="test.web.draft" depends="compile, compile.tests" description="Run only web-mode tests for this project.">
    <gwt.junit test.args="${test.args} -draftCompile -out www -web" test.out="${junit.out}/${build.host.platform}-web-mode-draft" test.cases="default.web.tests" >
      <extraclasspaths>
        <pathelement location="${gwt.build}/out/dev/core/bin-test" />
      </extraclasspaths>
    </gwt.junit>
  </target>

  <target name="test" depends="compile, compile.tests" description="Run hosted-mode, web-mode, remoteweb, and selenium 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
    -->
    <limit failonerror="true" hours="2">
    <parallel threadsPerProcessor="1">
      <!-- selenium-test is a no-op unless gwt.selenium.hosts is defined -->
      <antcall target="selenium-test"/>
      <!-- remoteweb-test is a no-op unless gwt.remote.browsers is defined -->
      <antcall target="remoteweb-test"/>
      <antcall target="test.hosted"/>
      <antcall target="test.web"/>
      <antcall target="test.web.draft"/>
    </parallel>
    </limit>
  </target>

  <target name="clean" description="Cleans this project's intermediate and output files">
    <delete dir="${project.build}" />
    <delete file="${project.lib}" />
  </target>
  <target name="presubmit" depends="test, checkstyle" description="runs the gwt api checker, user checkstyle, and user tests">
   <gwt.ant dir=".." target="apicheck-nobuild"/>
  </target>
</project>
