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

    Copyright (c) 1997, 2020 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

-->

<!--
INSTRUCTIONS for running nucleus quicklook tests.

To run all of the tests using the staged nucleus build in distributions/nucleus:
    mvn test
    
To run just one test:
    mvn -Dtest=MiscCommandsTest,NucleusStartStopTest test

(if you already have the server running, the NucleusStartStopTest can be omitted)

To run tests based on your own install:
    mvn -Dnucleus.home=...somedirectory/nucleus test
    
To see the output of a test run, look in the target/surefire-reports directory.
The TEST-TestSuite.xml file is especially useful. 
    
INSTRUCTIONS for adding tests.

Copy one of the existing test files, such as MiscCommandsTest.java.  Then add
tests.  The file will automatically be picked up as part of the suite. There is
no need to modify this pom.xml file or any other configuration file. Useful
utilities are in the NucleusTestUtils class.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.glassfish.main.tests</groupId>
        <artifactId>nucleus-tests</artifactId>
        <version>6.0.0-SNAPSHOT</version>
    </parent>
    <groupId>org.glassfish.main.tests</groupId>
    <artifactId>nucleus-quicklook</artifactId>
    <name>Nucleus Quicklook Tests</name>
    <version>6.0.0-SNAPSHOT</version>
    <description>This pom describes how to run QuickLook tests on the Nucleus distribution</description>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>common-util</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.tests</groupId>
            <artifactId>utils-ng</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

