<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<project name="Harmony Logging Test" default="test" basedir=".">

    <property name="hy.test.root" location=".." />
    <property name="hy.component" value="classlib" />
    <property name="hy.module" value="logging" />
    <import file="${hy.test.root}/../ant/testproperties.xml" />

    <target name="test" depends="test-module" />

    <target name="test-module" depends="test-jre-vm-info">
        <convert-test-as-class from="test.case" to="converted.tc.class" />
        <run-selected-hdk-tests module="logging" jar="logging_tests.jar">
            <junit-elements>
                <!-- Required by various tests that set security manager etc -->
                <jvmarg value="-Djava.security.policy=../testing.policy" />

                <jvmarg value="-Xbootclasspath/a:logging_boot_tests.jar"/>
            </junit-elements>
            <excludeorinclude>
                <include name="org/apache/harmony/logging/tests/java/util/logging/LogManagerTest.class"/>
            </excludeorinclude>
        </run-selected-hdk-tests>
        <run-selected-hdk-tests module="logging" jar="logging_tests.jar">
            <junit-elements>
                <!-- Required by various tests that set security manager etc -->
                <jvmarg value="-Djava.security.policy=../testing.policy" />

                <jvmarg value="-Xbootclasspath/a:logging_boot_tests.jar"/>
            </junit-elements>
            <excludeorinclude>
                <include name="org/apache/harmony/logging/tests/java/util/logging/*Test.class" unless="test.case" />
                <exclude name="org/apache/harmony/logging/tests/java/util/logging/LogManagerTest.class" unless="test.case" />
            </excludeorinclude>
        </run-selected-hdk-tests>
    </target>
    
</project>
