<?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-regex-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="testReferenceRegex">
      <property name="ref.one" refid="first.ref"/>
      <au:assertTrue>
        <contains substring="${file.separator}first" string="${ref.one}"/>
      </au:assertTrue>

      <property name="ref.two" refid="second.ref"/>
      <au:assertTrue>
        <contains substring="${file.separator}second" string="${ref.two}"/>
      </au:assertTrue>

      <condition property="uninherited.is.set" value="true">
        <isreference refid="third.missing"/>
      </condition>
      <fail message="Uninherited reference should not be visible" if="uninherited.is.set"/>
  </target>

</project>