<?xml version="1.0"?>

<!--
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

https://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="antunit-base-test"
    default="all"
         xmlns:au="antlib:org.apache.ant.antunit">

  <target name="all">
    <au:antunit>
      <fileset file="${ant.file}"/>
      <au:plainlistener/>
    </au:antunit>
  </target>

  <target name="setUp">
    <echo>setup</echo>
  </target>

  <target name="test1">
    <echo>test1</echo>
  </target>

  <target name="test2">
    <echo>test2</echo>
  </target>

  <target name="Xtest3">
    <echo>test3</echo>
  </target>

  <target name="test4">
    <au:assertTrue message="test4 fails">
      <istrue value="false"/>
    </au:assertTrue>
  </target>

  <target name="test5">
    <fail message="test5 exits with error"/>
  </target>

  <target name="testLogCaptureActive">
    <au:assertReferenceSet refid="ant.antunit.log"/>
  </target>

  <target name="test">
    <fail>should be ignored</fail>
  </target>

  <target name="tearDown">
    <echo>tearDown</echo>
  </target>
</project>