<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->

<!-- $Id: test-build.xml 209293 2005-07-05 16:19:18Z andreas $ -->

<project name="module-sitetree-test">
  
  <target name="test">
    <junit printsummary="yes" showoutput="true" haltonerror="on" haltonfailure="on">
      <classpath>
        <fileset dir="${build.webapp}/WEB-INF/lib" includes="*.jar, endorsed/*.jar"/>
        <path location="${build.webapp}/WEB-INF/classes"/>
        <path location="${build.test}"/>
      </classpath>
      <formatter type="plain" usefile="false" />
      <formatter type="xml" />
      <sysproperty key="junit.test.loglevel" value="${junit.test.loglevel}"/>
      <sysproperty key="contextRoot" value="${basedir}/build/lenya/webapp"/>
      <sysproperty key="tempDir" value="${basedir}/build/lenya/temp"/>
      <test name="org.apache.lenya.cms.site.tree.SiteTreeNodeImplTest" todir="${junit.dir}"/>
      <test name="org.apache.lenya.cms.site.tree.DefaultSiteTreeTest" todir="${junit.dir}"/>
    </junit>
  </target>
  
</project>
  