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

    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<project name="adminweb" default="default" basedir=".">
    <property file="build.properties"/>

 <description>Builds, tests, and runs the GlassFish Admin GUI</description>
<!-- <import file="nbproject/build-impl.xml"/>-->

<target name="echo">
    <echo message="Hello World"/>
</target>
<target name="sun-taskdef">
    <taskdef name="sun-appserv-deploy" classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.DeployTask">
        <classpath>
            <pathelement location="${sun.appserver.antjar}" />
        </classpath>
    </taskdef>
    <taskdef name="sun-appserv-undeploy" classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.UndeployTask">
        <classpath>
            <pathelement location="${sun.appserver.antjar}" />
        </classpath>
    </taskdef>
</target>

<!--<env key="APPCPATH" path="${env.APS_HOME}/lib/testng.jar"/>-->

<path id="path2testng">
    <pathelement location="../lib/testng-5.0-jdk15.jar"/>
</path>



<path id="class.path">
    <fileset dir="${install.dir}/lib">
        <include name="**/*.jar"/>
    </fileset>
    <pathelement location="classes"/>
</path>

<path id="test.classpath">
    <!--<fileset dir="${install.dir}/lib">
        <include name="**/*.jar"/>
    </fileset>-->
    <fileset dir="../../lib">
        <include name="**/*.jar"/>
    </fileset>
    <pathelement location="./classes/test"/>
</path>


<taskdef name="testng"
         classpathref="path2testng"
         classname="org.testng.TestNGAntTask"/>


<!-- Generate the TestNG report -->
<target name="report">
    <!--<delete dir="../../test-report"/>-->
    <mkdir dir="../../test-report"/>
    <junitreport todir="../../test-report">
        <fileset dir="../../">
           <include name="**/test-output/**/*.xml"/>
           <exclude name="**/testng-failed.xml"/>
        </fileset>
        <report format="noframes" todir="../test-report"/>
    </junitreport>
</target>
<target name="compile-tests"
            description="compile the test ng example" depends="">
       <delete dir="classes/test" failonerror="false"/>
       <mkdir dir="classes/test"/>
       <javac   debug="true"
              fork="true"
              source="1.5"
              classpathref="test.classpath"
              srcdir="src/test"
              destdir="classes/test"
       />
</target>

<target name="start">
  <echo message="Starting Selenium Server"/>
  <java jar="../../lib/selenium/selenium-server.jar" fork="true">
      <arg line="-interactive"/>
  </java>

</target>

<target  name="run">

    <echo message="=============Starting Selenium TestNG test at \n ${basedir}  ============"/>

    <mkdir dir="../test-output"/>
    <testng outputdir="../test-output"
            classpathref="test.classpath" groups="">
         <classfileset dir="classes/test" includes="**/SeleniumTest.class"/>
        <!--<xmlfileset dir="../../../" includes="testng.xml"/>-->
    </testng>

    <!--<antcall target="-post-test-run"/>    -->

</target>

<target name="stop">
        <get taskname="selenium-shutdown"
            src="http://localhost:4444/selenium-server/driver/?cmd=shutDown"
            dest="result.txt"
            ignoreerrors="true"/>
        <echo taskname="selenium-shutdown"
            message="Errors during shutdown are expected"/>
    </target>

<target name="dist">
    <echo message="Save EAR/WAR/JAR file"/>
</target>

<target name="_start-selenium">
 <java jar="../lib/selenium/${selenium-srvr-jar}" fork="true" spawn="true" />
 <antcall target="_run-ua-tests" />
 <get dest="${testreportdir}/results.txt"
        src="${selenium-srvr-loc}/selenium-server/driver/?cmd=shutDown" />
</target>




</project>
