<?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"/>

  <!-- 
      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 clover setup, because we dont want to run clover for the test-framework -->
  <target name="-clover.setup" if="run.clover"/>

  <!-- redefine the test compilation, so its just a no-op -->
  <target name="compile-test"/>
  
  <!-- 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 signaturesFile="${common.dir}/tools/forbiddenApis/tests.txt" classpathref="forbidden-apis.allclasses.classpath"> 
      <fileset dir="${build.dir}/classes/java"/>
    </forbidden-apis>
  </target>
  <target name="-check-forbidden-sysout"/>
  <target name="-check-forbidden-rue"/>

  <target name="javadocs-core" depends="javadocs"/>
  <target name="javadocs" depends="init,javadocs-lucene-core,javadocs-lucene-codecs">
    <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>
