<?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
 
        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="test-framework" default="default">
  <description>Framework for testing Lucene-based applications</description>

  <property name="build.dir" location="../build/test-framework"/>

  <import file="../common-build.xml"/>

  <path id="classpath">
    <pathelement location="${common.dir}/build/core/classes/java"/>
    <pathelement location="${common.dir}/build/codecs/classes/java"/>
    <fileset dir="lib"/>
  </path>

  <path id="test.classpath"> 
    <pathelement location="${build.dir}/classes/java"/>
    <pathelement location="${build.dir}/classes/test"/>
    <path refid="classpath"/>
    <path refid="junit-path"/>
  </path>

  <path id="junit.classpath">
    <path refid="test.classpath"/>
    <pathelement path="${java.class.path}"/>
  </path>

  <!-- 
      Specialize compile-core to depend on lucene-core and lucene-codecs compilation.
   -->
  <target name="compile-core" depends="init,compile-lucene-core,compile-codecs,common.compile-core"
          description="Compiles test-framework classes"/>

  <!-- redefine the forbidden apis for tests, as we check ourselves - no sysout testing -->
  <target name="-check-forbidden-tests" depends="-init-forbidden-apis,compile-core">
    <forbidden-apis suppressAnnotation="**.SuppressForbidden" signaturesFile="${common.dir}/tools/forbiddenApis/tests.txt" classpathref="forbidden-apis.allclasses.classpath"> 
      <fileset dir="${build.dir}/classes/java"/>
      <fileset dir="${build.dir}/classes/test"/>
    </forbidden-apis>
  </target>
  <target name="-check-forbidden-sysout"/>

  <target name="javadocs-core" depends="javadocs"/>
  <target name="javadocs" depends="init,javadocs-lucene-core,javadocs-lucene-codecs,check-javadocs-uptodate"
          unless="javadocs-uptodate-${name}">
    <sequential>
      <mkdir dir="${javadoc.dir}/test-framework"/>
      <invoke-javadoc overview="${src.dir}/overview.html"
                      destdir="${javadoc.dir}/test-framework"
                      title="${Name} ${version} Test Framework API">
        <sources>
          <packageset dir="${src.dir}"/>
          <link offline="true" href="${javadoc.link.junit}"
                packagelistLoc="${javadoc.packagelist.dir}/junit"/>
          <link href="../core/"/>
          <link href="../codecs/"/>
          <link href=""/>
        </sources>
      </invoke-javadoc>
      <mkdir dir="${build.dir}"/>
      <jarify basedir="${javadoc.dir}/test-framework" 
              destfile="${build.dir}/${final.name}-javadoc.jar"
              title="Lucene Search Engine: Test Framework" />
    </sequential>
  </target>
</project>
