| <!-- |
| |
| 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. |
| |
| --> |
| |
| <!-- |
| - Ant file for running tests for commons-logging. |
| - |
| - Quick build instructions: |
| - * mvn package |
| - * ant getlibs |
| - * cp build.properties.sample build.properties |
| - * Depending on which platform you are on, do either |
| - set JAVA_COMPILER=NONE |
| - or |
| - setenv JAVA_COMPILER NONE |
| - * ant -lib lib/junit-3.8.1.jar -f build-testing.xml test |
| - |
| - Note that we have to run Ant without the JIT compiler to get around bugs in |
| - the 1.2 JVM. That's why we need to set JAVA_COMPILER to NONE. |
| - See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4240622 |
| - |
| - Note that this build file uses the optional <junit> task. While the |
| - task "adapter" class comes by default with ant 1.6+, the junit libraries |
| - (3.8.1 or later) are also required to be made available to ant. This |
| - requires that you do one of the following: |
| - * create directory ~/.ant/lib and place the junit jar there |
| - * put the junit jar in $ANT_HOME/lib |
| - * run ant as "ant -lib path-to-junit-jar" |
| - * put the junit jar in $CLASSPATH |
| - |
| - Note when running these test before a JCL release it is strongly |
| - recommended that a 1.2 JVM is used. |
| - |
| - $Id$ |
| --> |
| |
| <project name="Logging" default="all" basedir="."> |
| |
| |
| <!-- ========== Initialize Properties ===================================== --> |
| |
| |
| <property file="build.properties"/> <!-- Component local --> |
| <property file="../build.properties"/> <!-- Commons local --> |
| <property file="${user.home}/build.properties"/> <!-- User local --> |
| |
| |
| <!-- ========== External Dependencies ===================================== --> |
| |
| |
| <!-- The directories corresponding to your necessary dependencies --> |
| <property name="junit.home" value="/usr/local/junit3.5"/> |
| <property name="jakarta.home" value="../.."/> |
| |
| <!-- |
| - The names of the unit tests to run. By default all tests are run, but |
| - this can be overridden from the command line by something like: |
| - ant -Dtestmatch=**/FooTestCase test |
| --> |
| <property name="testmatch" value="**/*TestCase"/> |
| |
| |
| <!-- ========== Derived Values ============================================ --> |
| |
| |
| <!-- The locations of necessary jar files --> |
| <property name="junit.jar" value="junit-3.8.1.jar"/> |
| <property name="log4j12.jar" value="log4j-1.2.12.jar"/> |
| <property name="log4j13.jar" value="log4j-1.3.0.jar"/> |
| <property name="logkit.jar" value="logkit-1.0.1.jar"/> |
| <property name="avalon-framework.jar" value="avalon-framework-4.1.3.jar"/> |
| <property name="servletapi.jar" value="servletapi-2.3.jar"/> |
| |
| |
| <!-- ========== Component Declarations ==================================== --> |
| |
| |
| <!-- The name of this component --> |
| <property name="component.name" value="logging"/> |
| |
| <!-- The primary package name of this component --> |
| <property name="component.package" value="org.apache.commons.logging"/> |
| |
| <!-- The title of this component --> |
| <property name="component.title" value="Logging Wrapper Library"/> |
| |
| <!-- The current version number of this component --> |
| <property name="component.version" value="1.1.1-SNAPSHOT"/> |
| |
| <!-- The base directory for compilation targets --> |
| <property name="build.home" value="${basedir}/target"/> |
| |
| <!-- The base directory for component configuration files --> |
| <property name="conf.home" value="src/conf"/> |
| |
| <!-- jar names --> |
| <property name="core.jar.name" value="commons-${component.name}-${component.version}.jar"/> |
| <property name="api.jar.name" value="commons-${component.name}-api-${component.version}.jar"/> |
| <property name="adapters.jar.name" value="commons-${component.name}-adapters-${component.version}.jar"/> |
| <property name="src.ide.name" value="commons-${component.name}-${component.version}-ide.zip"/> |
| |
| <!-- Construct compile classpath --> |
| <path id="compile.classpath"> |
| <pathelement location="${build.home}/classes"/> |
| <pathelement location="${junit.jar}"/> |
| <pathelement location="${logkit.jar}"/> |
| <pathelement location="${avalon-framework.jar}"/> |
| <pathelement location="${servletapi.jar}"/> |
| </path> |
| |
| |
| <!-- ========== Test Execution Defaults =================================== --> |
| |
| |
| <!-- |
| - Construct unit test classpath (generic tests). |
| - |
| - Note that unit tests that use the PathableTestSuite approach don't need |
| - any of this (except junit). However unit tests that don't use PathableTestSuite |
| - to configure their classpath will need the basic classes to be provided |
| - via this mechanism. |
| --> |
| <path id="test.classpath"> |
| <pathelement location="${build.home}/classes"/> |
| <pathelement location="${build.home}/test-classes"/> |
| <pathelement location="${junit.jar}"/> |
| <pathelement location="${logkit.jar}"/> |
| <pathelement location="${avalon-framework.jar}"/> |
| <pathelement location="${conf.home}"/> |
| <pathelement location="${servletapi.jar}"/> |
| </path> |
| |
| <!-- Construct unit test classpath (Log4J tests) --> |
| <path id="test.classpath.log4j13"> |
| <pathelement location="${build.home}/classes"/> |
| <pathelement location="${build.home}/test-classes"/> |
| <pathelement location="${junit.jar}"/> |
| <pathelement location="${log4j13.jar}"/> |
| </path> |
| |
| <!-- Construct unit test classpath (Log4J tests) --> |
| <path id="test.classpath.log4j12"> |
| <pathelement location="${build.home}/classes"/> |
| <pathelement location="${build.home}/test-classes"/> |
| <pathelement location="${junit.jar}"/> |
| <pathelement location="${log4j12.jar}"/> |
| </path> |
| |
| <!-- Should all tests fail if one does? --> |
| <property name="test.failonerror" value="true"/> |
| |
| <!-- The test runner to execute --> |
| <property name="test.runner" value="junit.textui.TestRunner"/> |
| |
| <!-- libs to pass to the tests --> |
| <property name="test.sysprops.testclasses" value="${build.home}/test-classes"/> |
| <property name="test.sysprops.log4j12" value="${log4j12.jar}"/> |
| <property name="test.sysprops.log4j13" value="${log4j13.jar}"/> |
| <property name="test.sysprops.logkit" value="${logkit.jar}"/> |
| <property name="test.sysprops.servlet-api" value="${servletapi.jar}"/> |
| <property name="test.sysprops.commons-logging" value="${build.home}/${core.jar.name}"/> |
| <property name="test.sysprops.commons-logging-api" value="${build.home}/${api.jar.name}"/> |
| <property name="test.sysprops.commons-logging-adapters" value="${build.home}/${adapters.jar.name}"/> |
| <propertyset id="test-lib-props"> |
| <propertyref prefix="test.sysprops."/> |
| <mapper type="glob" from="test.sysprops.*" to="*"/> |
| </propertyset> |
| |
| <!-- ========== Executable Targets ======================================== --> |
| |
| |
| <!-- |
| - Running this target will download all the necessary dependencies into the "lib" subdirectory. |
| --> |
| <property name="getlibs.base" value="http://repo1.maven.org/maven"/> |
| <target name="getlibs"> |
| <mkdir dir="lib"/> |
| <get dest="lib/junit-3.8.1.jar" src="${getlibs.base}/junit/jars/junit-3.8.1.jar"/> |
| <get dest="lib/logkit-1.0.1.jar" src="${getlibs.base}/logkit/jars/logkit-1.0.1.jar"/> |
| <get dest="lib/avalon-framework-4.1.3.jar" src="${getlibs.base}/avalon-framework/jars/avalon-framework-4.1.3.jar"/> |
| <get dest="lib/log4j-1.2.12.jar" src="${getlibs.base}/log4j/jars/log4j-1.2.12.jar"/> |
| <get dest="lib/servletapi-2.3.jar" src="${getlibs.base}/servletapi/jars/servletapi-2.3.jar"/> |
| </target> |
| |
| <target name="init" |
| description="Initialize and evaluate conditionals"> |
| <echo message="-------- ${component.title} ${component.version} --------"/> |
| <filter token="name" value="${component.name}"/> |
| <filter token="package" value="${component.package}"/> |
| <filter token="version" value="${component.version}"/> |
| </target> |
| |
| <target name="prepare" depends="init" |
| description="Prepare build directory"> |
| |
| <echo> |
| Log4j12: ${log4j12.jar} |
| <!-- Note: log4j13 support is not available in the 1.1 release. --> |
| <!--Log4j13: ${log4j13.jar}--> |
| LogKit: ${logkit.jar} |
| Avalon-Framework: ${avalon-framework.jar} |
| </echo> |
| |
| <mkdir dir="${build.home}"/> |
| <mkdir dir="${build.home}/classes"/> |
| <mkdir dir="${build.home}/conf"/> |
| <mkdir dir="${build.home}/tests"/> |
| </target> |
| |
| |
| <target name='discovery' depends='init'> |
| <available property="jdk.1.4.present" |
| classname="java.util.logging.Logger"/> |
| |
| <available property="logkit.present" |
| classpathref="compile.classpath" |
| classname="org.apache.log.Logger"/> |
| |
| <available property="avalon-framework.present" |
| classpathref="compile.classpath" |
| classname="org.apache.avalon.framework.logger.Logger"/> |
| |
| <available file="${log4j12.jar}" property="log4j12.present"/> |
| <available file="${log4j13.jar}" property="log4j13.present"/> |
| <available file="${build.home}/docs" property="maven.generated.docs.present"/> |
| </target> |
| |
| <target name="log4j12-test-warning" unless='log4j12.jar' depends='init,discovery'> |
| <echo> |
| *** WARNING *** |
| Log4J 1.2.x Jar not found: Cannot execute 1.2.x tests |
| </echo> |
| </target> |
| |
| <target name="show-lib-presence"> |
| <echo message="jdk.1.4.present=${jdk.1.4.present}"/> |
| <echo message="log4j12.present=${log4j12.present}"/> |
| <!-- Note: log4j13 support is not available in the 1.1 release. --> |
| <!--<echo message="log4j13.present=${log4j13.present}"/>--> |
| <echo message="logkit.present=${logkit.present}"/> |
| <echo message="avalon-framework.present=${avalon-framework.present}"/> |
| </target> |
| |
| |
| <target name="all" depends="test" |
| description="Test all components"/> |
| |
| |
| <!-- ========== Unit Test Targets ========================================= --> |
| |
| |
| <!-- |
| - Target to run all unit tests. |
| - |
| - The batchtest task auto-detects what tests are available without |
| - any need to define TestSuite objects in the code to compose |
| - sets of tests to be run. |
| - |
| - Details of the unit test results for each TestCase will appear in |
| - a file in directory ${build.home}/test-reports, together with any |
| - output to stdout or stderr generated by the test code. |
| - |
| - If you're having problems running this target due to the use of |
| - the "junit" task below, see the comments at the head of this file. |
| - |
| - Individual tests (or subsets of tests) can be run by doing |
| - ant -Dtestmatch=**/FooTestCase testall |
| --> |
| |
| <target name="test" depends="log4j12-test-warning" |
| description="Run all unit tests"> |
| <echo message="Test output can be found in directory ${build.home}/test-reports."/> |
| <delete dir="${build.home}/test-reports"/> |
| <mkdir dir="${build.home}/test-reports"/> |
| |
| <echo message="executing tests [${testmatch}.java]"/> |
| <!-- |
| - Note that the fork/forkmode settings define default behaviour for tests. |
| - The <test> and <batchtest> tags can override these settings if needed. |
| - The default settings cause a single VM to be created in which all of |
| - the tests are then run. |
| --> |
| <junit printsummary="off" showoutput="no" fork="yes" forkmode="once" failureproperty="test.failure"> |
| <!-- plain output to file; brief output to console. --> |
| <formatter type="plain"/> |
| <formatter usefile="false" type="brief"/> |
| |
| <!-- |
| - Provide a set of properties pointing to the logging libs for |
| - the use of the PathableClassLoader class used by some unit tests. |
| --> |
| <syspropertyset refid="test-lib-props"/> |
| <classpath refid="test.classpath"/> |
| |
| <!-- |
| - Uncomment this to enable logging diagnostics for tests |
| - <jvmarg value="-Dorg.apache.commons.logging.diagnostics.dest=STDERR"/> |
| --> |
| |
| <!-- |
| - Auto-detect the tests to run. Checking the ${build.home}/tests |
| - directory for .class files rather than the src/test directory |
| - for .java files means that when we run the tests on platforms |
| - where some components (eg jdk14 logging) is not available, |
| - just ensuring the tests are skipped from the compile will |
| - also cause them to be skipped from the testing. |
| - |
| - This does introduce the danger that if tests accidentally |
| - fail to compile then we won't notice it here. However that |
| - should have been reported earlier anyway. |
| --> |
| <batchtest todir="${build.home}/test-reports"> |
| <fileset dir="${build.home}/test-classes"> |
| <include name="${testmatch}.class"/> |
| <!-- |
| - Exclude the jdk14 tests because we are running these tests on |
| - a jvm < 1.4 |
| --> |
| <exclude name="org/apache/commons/logging/jdk14/*"/> |
| <!-- |
| - Exclude the security tests because they rely on the |
| - MockSecurityManager that uses code that was first introduced in |
| - Java 1.4 |
| --> |
| <exclude name="org/apache/commons/logging/security/*"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| |
| <fail if="test.failure"> |
| One or more unit tests failed. |
| </fail> |
| </target> |
| |
| </project> |