<?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="reference-test" basedir="." default="all"
  xmlns:au="antlib:org.apache.ant.antunit">

  <target name="all">
    <fail>Not a self-contained build file</fail>
  </target>

  <target name="testReference">
    <property name="ref.string" refid="inherited.ref"/>
    <au:assertTrue>
      <and>
        <contains substring="${file.separator}some${path.separator}"
                  string="${ref.string}"/>
        <contains substring="${file.separator}path${path.separator}"
                  string="${ref.string}"/>
        <contains substring="${file.separator}value"
                  string="${ref.string}"/>
      </and>
    </au:assertTrue>
    <condition property="uninherited.is.set" value="true">
      <isreference refid="uninherited.ref"/>
    </condition>
    <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
  </target>

</project>