<?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="setup-and-teardown"
    default="all"
         xmlns:au="antlib:org.apache.ant.antunit">

  <target name="all">
    <fail message="These are not standalone tests." />
  </target>

  <target name="setUp">
    <fail message="outputfile property is not set." unless="outputfile" />
    <echo file="${outputfile}" append="true" message="S" />
  </target>

  <target name="test1">
    <echo file="${outputfile}" append="true" message="E" />
  </target>

  <target name="test2">
    <echo file="${outputfile}" append="true" message="E" />
  </target>

  <target name="test3">
    <echo file="${outputfile}" append="true" message="E" />
  </target>

  <target name="test4">
    <echo file="${outputfile}" append="true" message="E" />
  </target>

  <target name="tearDown">
    <echo file="${outputfile}" append="true" message="T" />
  </target>

</project>
