<?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="usage" basedir=".">
    <property file="build.properties"/>

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

<target name="usage">
    <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>
