curcuru 01/07/25 11:29:17
Added: test build.bat build.xml test.properties
Log:
Create new test compile/execution methodology
build.bat/build.xml are used to both compile and execute tests
test.properties are defaults for testing properties
Revision Changes Path
1.1 xml-xalan/test/build.bat
Index: build.bat
===================================================================
@echo off
@goto start
rem Name: test.bat
rem Author: [EMAIL PROTECTED]
rem See: test.xml
:usage
@echo test.bat - executes Xalan Java-based test automation
@echo Usage: test [target] [-D options]
@echo Example: test api -DtestClass=TransformerAPITest -Dqetest.loggingLevel
@echo.
@echo EITHER: set environment variable JARDIR to point to dir
@echo containing *all* needed .jars to run, ...
@echo ... OR: be in xml-xalan/test having built whatever .jars you
@echo need in the normal locations, ...
@echo ... OR: pass appropriate ANT_OPTS or the like to reset .jar
@echo file locations to your locations
@echo.
@echo You should have JAVA_HOME/lib/tools.jar, etc. in your CLASSPATH
@echo You may set PARSER_JAR to specific path/filename.jar of parser
@echo You may set JAVA_OPTS to be passed to java program
@echo All other command line opts are passed to Ant
@echo.
goto done
rem ------------------------------------------------------------------------
rem Blatantly modeled on ant.bat
:start
rem Check for help requests
if '%1' == '' goto usage
if '%1' == '-h' goto usage
if '%1' == '-H' goto usage
if '%1' == '-?' goto usage
@echo %0 beginning...
if not "%OS%"=="Windows_NT" goto win9xStart
:winNTStart
@setlocal
rem On NT/2K grab all arguments at once
set ANT_CMD_LINE_ARGS=%*
goto doneStart
:win9xStart
rem Slurp the command line arguments. This loop allows for an unlimited
number of
rem agruments (up to the command line limit, anyway).
set ANT_CMD_LINE_ARGS=
:setupArgs
if "%1" == "" goto doneStart
set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
shift
goto setupArgs
:doneStart
rem This label provides a place for the argument list loop to break out
rem and for NT handling to skip to.
rem default ANT_HOME
if "%ANT_HOME%"=="" set ANT_HOME=java
goto checkJava
:checkJava
set _JAVACMD=%JAVACMD%
set _ANT_CP=%CLASSPATH%
rem Note: classpath handling is special for testing Xalan
rem If PARSER_JAR blank, default to xerces in the xalan dir
if "%PARSER_JAR%" == "" set _PARSER_JAR=..\java\bin\xerces.jar
if not "%PARSER_JAR%" == "" set _PARSER_JAR=%PARSER_JAR%
rem If JARDIR is blank, then only add Ant and a PARSER_JAR to the
rem classpath before running Ant - then within the Ant file, it
rem will add other .jars from default locations
if "%JARDIR%" == "" set
_ANT_CP=%CLASSPATH%;%ANT_HOME%\bin\ant.jar;%_PARSER_JAR%
rem Else if JARDIR is set, then put all Xalan-J 2.x required .jar files
rem in the classpath first from that one dir
rem Note: Does not yet support xsltc testing! TBD -sc
if not "%JARDIR%" == "" set
_ANT_CP=%JARDIR%\xerces.jar;%JARDIR%\xalan.jar;%JARDIR%\bsf.jar;%JARDIR%\js.jar;%_ANT_HOME%\bin\ant.jar;%CLASSPATH%
if "%JAVA_HOME%" == "" goto noJavaHome
if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java
goto runAnt
:noJavaHome
if "%_JAVACMD%" == "" set _JAVACMD=java
echo.
echo Warning: you should set JAVA_HOME and add tools.jar/classes.zip to your
CLASSPATH!.
echo.
:checkJikes
if not "%JIKESPATH%" == "" goto runAntWithJikes
:runAnt
%_JAVACMD% -classpath %_ANT_CP% -Dant.home="%ANT_HOME%" %ANT_OPTS%
org.apache.tools.ant.Main %ANT_CMD_LINE_ARGS%
goto end
:runAntWithJikes
%_JAVACMD% -classpath %_ANT_CP% -Dant.home="%ANT_HOME%"
-Djikes.class.path=%JIKESPATH% %ANT_OPTS% org.apache.tools.ant.Main
%ANT_CMD_LINE_ARGS%
:end
set _ANT_CP=
set _JAVACMD=
set _PARSER_JAR=
set ANT_CMD_LINE_ARGS=
if not "%OS%"=="Windows_NT" goto mainEnd
:winNTend
@endlocal
:mainEnd
@echo %0 completed!
1.1 xml-xalan/test/build.xml
Index: build.xml
===================================================================
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* test.xml
* Ant 1.3.x build script for compiling and running Xalan-J tests.
*
* Note that this is a slightly unusual Ant build.xml file, since we
* support both compiling/packaging the Xalan-J tests themselves, as
* well as a number of targets designed to execute the tests once
* they're built.
*
* @author [EMAIL PROTECTED]
* @see build.bat
*/
-->
<project name="testxsl" default="jar" basedir=".">
<!-- Installation, usage instructions TBD -sc -->
<!-- ==================================================================
-->
<!-- Initialize: define various properties about locations, jars, etc.
-->
<!-- ==================================================================
-->
<!-- First, read in the user's own default properties, if they exist -->
<property file="my.test.properties" />
<!-- Then, read in the default checked-in properties -->
<property file="test.properties" />
<!-- Also provide environment properties with a special prefix which
allows us to detect if JARDIR is set.
-->
<property environment="ENV" />
<!-- Note the testxsl.jar property may be overwritten when external
build.xml scripts call us via <ant>, thus creating a
differently-named output jar instead of 'testxsl'
-->
<property name="name" value="testxsl"/>
<property name="Name" value="Testxsl"/>
<property name="year" value="2000-2001"/>
<property name="copyright" value="Copyright © ${year} The Apache
Software Foundation. All rights reserved."/>
<property name="testxsl.jar.name" value="${name}.jar"/>
<property name="qetest.jar.name" value="qetest.jar"/>
<!-- Properties related to compiling the tests -->
<property name="build.compiler" value="classic"/>
<property name="compiler" value="${build.compiler}"/>
<property name="debug" value="on"/>
<!-- Specific locations related to building test code/docs -->
<property name="src.dir" value="java/src"/>
<property name="test.root" value="org/apache/qetest/"/>
<property name="test.dir" value="${src.dir}/${test.root}"/>
<property name="build.dir" value="java/build"/>
<property name="build.docs" value="${build.dir}/docs"/>
<property name="build.apidocs" value="${build.docs}/apidocs"/>
<property name="javadocs.packages"
value="org.apache.qetest,org.apache.qetest.xslwrapper,org.apache.qetest.xsl,org.apache.qetest.trax,org.apache.qetest.trax.dom,org.apache.qetest.trax.sax,org.apache.qetest.trax.stream,org.apache.qetest.xalanj2"/>
<property name="xdocs.dir" value="java/xdocs"/>
<property name="xdocs.book" value="${xdocs.dir}/sources/xalantest.xml"/>
<property name="xdocs.style" value="${xdocs.dir}/style"/>
<property name="testxsl.jar" value="${build.dir}/${testxsl.jar.name}"/>
<!-- Specific locations related to Xalan code, which should be in a
sister tree to us -->
<property name="xalan.reldir" value="../java"/>
<property name="xalan.bin.dir" value="${xalan.reldir}/bin"/>
<property name="xalan.build.dir" value="${xalan.reldir}/build"/>
<property name="xalan.xdocs.dir" value="${xalan.reldir}/xdocs"/>
<property name="xalan.doclet.jar"
value="${xalan.bin.dir}/xalan2jdoc.jar"/>
<property name="doc.generator" value="org.apache.stylebook.StyleBook"/>
<property name="xalan.generator.styletargz"
value="${xalan.xdocs.dir}/xml-site-style.tar.gz"/>
<property name="xdocs.generator.styletar"
value="${xdocs.dir}/xml-site-style.tar"/>
<!-- Various names/locations of dependent jars -->
<property name="xalan.jar" value="${xalan.build.dir}/xalan.jar"/>
<property name="xerces.jar" value="${xalan.bin.dir}/xerces.jar"/>
<property name="bsf.jar" value="${xalan.bin.dir}/bsf.jar"/>
<!-- The js.jar is for Javascript extension tests; you must
get this .jar yourself. Feel free to reset the location.
-->
<property name="js.jar" value="../js.jar"/>
<!-- Note: given that many of the tests interact with xerces and
xalan classes, and that Ant may use these classes (especially parser
ones) I've found it's best to fork the tests.
Later I'd like to give the user the option to fork or not, since
while forking is slower and problematic on some systems, it is
also a safer testing environment (since the Ant classes and the
parser aren't already loaded, etc.)
-->
<property name="fork-tests" value="yes"/>
<!-- Property to have the Ant build fail when a test has an
error (not necessarily a fail). Needs improvement.
-->
<property name="fail-on-error" value="yes"/>
<!-- Classpath used when compiling tests -->
<path id="compiletest.class.path">
<pathelement path="${java.class.path}" />
<pathelement location="${xalan.jar}" />
<pathelement location="${xerces.jar}" />
</path>
<!-- Classpath used when running API tests -->
<path id="api.class.path">
<pathelement path="${java.class.path}" />
<pathelement location="${xalan.jar}" />
<pathelement location="${xerces.jar}" />
<pathelement location="${testxsl.jar}" />
<!-- Need to add extensions dir too -->
</path>
<!-- Classpath used when running conf or conformance tests -->
<path id="conf.class.path">
<pathelement path="${java.class.path}" />
<pathelement location="${xalan.jar}" />
<pathelement location="${xerces.jar}" />
<pathelement location="${testxsl.jar}" />
</path>
<!-- Classpath used when running perf or performance tests -->
<path id="perf.class.path">
<path refid="conf.class.path" />
</path>
<!-- Classpath used when running contrib or user-contributed tests -->
<path id="contrib.class.path">
<path refid="conf.class.path" />
</path>
<!-- ==================================================================
-->
<!-- Initialize: Define an Ant task that executes Xalan test automation
-->
<!-- ==================================================================
-->
<taskdef name="xalantest"
classname="org.apache.qetest.xsl.XSLTestAntTask">
<classpath>
<pathelement path="${java.class.path}" />
<!-- Needed so this build file can run: this refers to
a precompiled version of XSLTestAntTask.class that
is checked in: normally at runtime, it should come
from the testxsl.jar file instead of below.
-->
<pathelement location="${src.dir}" />
<pathelement location="${testxsl.jar}" />
</classpath>
</taskdef>
<!-- ==================================================================
-->
<!-- Initialize: setup for compiling, doc building, running tests
-->
<!-- ==================================================================
-->
<target name="init.test"
description="Prepare timestamp, echo JARDIR for debugging">
<!-- Note this is case-sensitive, even on Windows! -->
<echo message="Your ==JARDIR== is set to ==${ENV.JARDIR}==" />
<tstamp />
<!-- Note this is used when styling results files from tests to html.
-->
<available
classname="org.apache.tools.ant.taskdefs.optional.XalanLiaison"
property="xalan-liaison" />
</target>
<target name="init.build" depends="init.test"
description="Prepare build output tree, copy prebuilts">
<echo message="JVM Classpath is ${java.class.path}" />
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dir}/${test.root}" />
<!-- Also copy over precompiled external processor wrapper classes -->
<copy todir="${build.dir}/${test.root}/xslwrapper" >
<fileset dir="${test.dir}xslwrapper">
<include name="**/*.class" />
<include name="**/*.properties" />
</fileset>
</copy>
</target>
<target name="init.docs" depends="init.build"
description="Prepare output tree for documentation">
<mkdir dir="${build.apidocs}" />
<!-- Copy the Xalan-specific version of doc files and untargz them -->
<gunzip src="${xalan.generator.styletargz}"
dest="${xdocs.generator.styletar}"/>
<untar src="${xdocs.generator.styletar}" dest="${xdocs.dir}"/>
<delete file="${xdocs.generator.styletar}"/>
</target>
<!-- ==================================================================
-->
<!-- Run tests: the normal StylesheetTestletDriver on the conf suite
-->
<!-- ==================================================================
-->
<target name="conf" description="Run TestletDriver over the conf tree"
depends="init.test">
<!-- Set the default conformance test driver, user may override -->
<property name="testClass"
value="org.apache.qetest.xsl.StylesheetTestletDriver" />
<echo message="Executing Xalan conf test: ${testClass}" />
<xalantest test="${testClass}"
testType="conf."
classpathref="conf.class.path"
fork="${fork-tests}"
failonerror="${fail-on-error}" />
</target>
<!-- ==================================================================
-->
<!-- Run tests: the normal StylesheetTestletDriver on the perf suite
-->
<!-- ==================================================================
-->
<target name="perf" description="Run TestletDriver over the perf tree"
depends="init.test">
<!-- Set the default conformance test driver, user may override -->
<property name="testClass"
value="org.apache.qetest.xsl.StylesheetTestletDriver" />
<echo message="Executing Xalan perf test: ${testClass}" />
<xalantest test="${testClass}"
testType="perf."
classpathref="perf.class.path"
fork="${fork-tests}"
failonerror="${fail-on-error}" />
</target>
<!-- ==================================================================
-->
<!-- Run tests: the normal StylesheetTestletDriver on the contrib suite
-->
<!-- ==================================================================
-->
<target name="contrib" description="Run TestletDriver over the contrib
tree"
depends="init.test">
<!-- Set the default conformance test driver, user may override -->
<property name="testClass"
value="org.apache.qetest.xsl.StylesheetTestletDriver" />
<echo message="Executing Xalan contrib test: ${testClass}" />
<xalantest test="${testClass}"
testType="contrib."
classpathref="contrib.class.path"
fork="${fork-tests}"
failonerror="${fail-on-error}" />
</target>
<!-- ==================================================================
-->
<!-- Run tests: a specific named API test
-->
<!-- ==================================================================
-->
<target name="api" description="Run a specific API test"
depends="init.test">
<!-- Note no default is set; also testClass is not prefixed! -->
<echo message="Executing Xalan api test: ${testClass}" />
<xalantest test="${testClass}"
testType="api."
classpathref="api.class.path"
fork="${fork-tests}"
failonerror="${fail-on-error}" />
</target>
<!-- ==================================================================
-->
<!-- Run tests: Run the Xalan-J 2.x Minitest
-->
<!-- ==================================================================
-->
<target name="minitest" description="Run the Xalan-J 2.x Minitest">
<antcall target="api">
<param name="testClass" value="org.apache.qetest.trax.Minitest"/>
</antcall>
</target>
<!-- ==================================================================
-->
<!-- Build Tests: Compile/jar targets for each 'layer' of testing code
-->
<!-- ==================================================================
-->
<target name="compile.qetest" depends="init.build"
description="Compile base qetest files; no Xalan dependencies">
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}*.java"
debug="${debug}" />
</target>
<target name="jar.qetest" depends="compile.qetest"
description="Jar base qetest files; no Xalan dependencies">
<jar jarfile="${build.dir}/${qetest.jar.name}"
basedir="${build.dir}"
includes="${test.root}*.java,${test.root}*.properties" />
</target>
<!-- This step should be dependent upon general XML/XSL
functionality like SAX, DOM, JAXP and the like, but
should not directly depend on Xalan
-->
<target name="compile.xsl" depends="compile.qetest"
description="Compile TransformWrapper and associated classes">
<!-- This javac has no dependencies -->
<!-- @deprecated ProcessorWrapper.java to be removed! -->
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}xslwrapper/ProcessorWrapper.java,${test.root}xslwrapper/TransformWrapperHelper.java,${test.root}xslwrapper/TransformWrapper.java,${test.root}xslwrapper/TransformWrapperFactory.java"
debug="${debug}" />
<!-- This javac depends on JAXP, SAX, DOM; hence the specific
classpathref -->
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}xsl/*.java"
debug="${debug}"
classpathref="compiletest.class.path" />
</target>
<target name="compile.trax.xslwrappers" depends="compile.xsl"
description="Compile Trax*Wrapper xslwrappers only">
<!-- Should only be dependent on JAXP, not Xalan specifically -->
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}xslwrapper/Trax*Wrapper.java,${test.root}xslwrapper/TraxWrapperUtils.java"
debug="${debug}"
classpathref="compiletest.class.path" />
</target>
<target name="compile.trax" depends="compile.xsl,compile.trax.xslwrappers"
description="Compile various JAXP-based API tests">
<!-- Should only be dependent on JAXP, not Xalan specifically -->
<!-- Separate javac steps to avoid compiler oddities -->
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}trax/*.java"
debug="${debug}"
classpathref="compiletest.class.path" />
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}trax/stream/*.java"
debug="${debug}"
classpathref="compiletest.class.path" />
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}trax/dom/*.java"
debug="${debug}"
classpathref="compiletest.class.path" />
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}trax/sax/*.java"
debug="${debug}"
classpathref="compiletest.class.path" />
</target>
<target name="compile" depends="compile.trax">
<echo message="Compile Xalan-J 2.x specific tests" />
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}xalanj2/*.java"
debug="${debug}"
classpathref="compiletest.class.path" />
</target>
<target name="jar" depends="compile"
description="Build testxsl.jar with all available tests">
<jar jarfile="${testxsl.jar}"
basedir="${build.dir}"
includes="**/*.class,**/*.properties" />
</target>
<target name="clean"
description="Clean up the compiled tests and docs">
<delete dir="${build.dir}"/>
<delete dir="${xdocs.style}"/> <!-- init.build.docs creates this tree
-->
</target>
<!-- ==================================================================
-->
<!-- Build docs: Creates the User's Guide
-->
<!-- ==================================================================
-->
<target name="docs" depends="init.docs"
description="Build the framework/overview docs for tests">
<java fork="yes" classname="${doc.generator}">
<classpath>
<pathelement
location="${xalan.bin.dir}/stylebook-1.0-b3_xalan-2.jar" />
<pathelement path="${java.class.path}" />
</classpath>
<arg line="targetDirectory=${build.docs} ${xdocs.book}
${xdocs.style}"/>
</java>
</target>
<!-- ==================================================================
-->
<!-- Build docs: Creates the Javadoc API documentation
-->
<!-- ==================================================================
-->
<target name="javadocs" depends="init.docs"
description="Build the Javadocs for tests">
<!-- Ant 1.2 ignores destdir arg if doclet is set, so must send to
doclet in doclet subelement dleslie-->
<!-- But: Ant 1.3 fails if you *don't* provide destdir attr...
curcuru-->
<javadoc
classpath="${java.class.path};${xalan.jar}"
sourcepath="${src.dir}"
packagenames="${javadocs.packages}"
protected="true"
author="true"
version="true"
use="true"
windowtitle="${Name}"
doctitle="${Name}"
bottom="${copyright}"
destdir="${build.apidocs}">
<doclet name="xalanjdoc.Standard" path="${xalan.doclet.jar}">
<param name="-d" value="${build.apidocs}"/>
</doclet>
</javadoc>
</target>
<!-- ==================================================================
-->
<!-- Special: Targets specific to XSLTC which requires extra .jars
-->
<!-- This section will be updated as xsltc integrates more with xalan
-->
<!-- ==================================================================
-->
<path id="xsltc.class.path">
<pathelement path="${xalan.build.dir}/xsltc.jar" />
<pathelement path="${xalan.bin.dir}/BCEL.jar" />
<pathelement path="${xalan.bin.dir}/JLex.jar" />
<pathelement path="${xalan.bin.dir}/java_cup.jar" />
<pathelement path="${xalan.bin.dir}/runtime.jar" />
<pathelement path="${xalan.bin.dir}/xml.jar" />
<pathelement path="${java.class.path}" />
</path>
<target name="compile.xsltc.xslwrappers" depends="compile.xsl"
description="Compile Xsltc*Wrapper xslwrappers only">
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}xslwrapper/Xsltc*Wrapper.java,${test.root}xslwrapper/TraxWrapperUtils.java"
debug="${debug}"
classpathref="xsltc.class.path" />
</target>
<target name="compile.xsltc" depends="compile.xsltc.xslwrappers"
description="Compile xsltc native API tests only">
<javac srcdir="${src.dir}"
destdir="${build.dir}"
includes="${test.root}xsltc/*.java"
debug="${debug}"
classpathref="xsltc.class.path" />
</target>
<target name="jar.xsltc" depends="compile.xsltc"
description="Build testxsl.jar with xsltc-specific tests">
<jar jarfile="${build.dir}/${testxsl.jar.name}"
basedir="${build.dir}"
includes="**/*.class,**/*.properties" />
</target>
</project>
1.1 xml-xalan/test/test.properties
Index: test.properties
===================================================================
# Default settings for running test automation; used in Ant file test.xml
#
# Users may override these settings either on the command line
# with Ant via -Dqetest.property=value, or simply by creating
# a 'my.test.properties' file in the same directory, which will
# be read first and will override similar settings below
#
# Properties prefixed with 'conf.' are used for StylesheetTestletDriver
# tests or similar tests with the conformance test; likewise
# similar tests with 'perf.' or 'contrib.'
# Properties prefixed with 'api.' are used for individual API tests
# Properties prefixed with 'qetest.' can be used with any tests
# All prefixes are removed by the XSLTestAntTask in the Ant process
# before these properties are passed to the tests
#---- Choose locations: where to find files, where to log to ----
# inputDir is where root of test xml/xsl files are
api.inputDir=tests/api
conf.inputDir=tests/conf
perf.inputDir=tests/perf
contrib.inputDir=tests/contrib
# goldDir is where the 'gold' or reference files to check against live
api.goldDir=tests/api-gold
conf.goldDir=tests/conf-gold
perf.goldDir=tests/perf-gold
contrib.goldDir=tests/contrib-gold
# outDir is where we put the actual output files
api.outputDir=results-api
conf.outputDir=results-conf
perf.outputDir=results-perf
contrib.outputDir=results-contrib
# The test results log will be saved in this file
api.logFile=results-api/results.xml
conf.logFile=results-conf/results.xml
perf.logFile=results-perf/results.xml
contrib.logFile=results-contrib/results.xml
#---- Choose output: How much/what kinds of info should we log ----
# Choose output: How much logging info is saved into our logFile
# Between 0 (very little) and 99 (lots)
qetest.loggingLevel=99
# Choose output: How much logging info is dumped to the console
qetest.ConsoleLogger.loggingLevel=30
# If we should save performance-oriented info in the logfile
qetest.perfLogging=true
# Set debug for advanced debugging of the tests themselves
#qetest.debug=true
#---- Choose XSLT processor and test algorithim ----
# ProcessorWrapper flavors supported: trax|trax.dom|trax.sax|other...
qetest.flavor=trax
# A Testlet class defines the actual algorithim used to
# test each stylesheet found
qetest.testlet=org.apache.qetest.xsl.StylesheetTestlet
#---- Choose tests via filters (either/or...) ----
# Set category to run only the single named directory in inputDir
#qetest.category=Atrs
# Set filter for running multiple dirs under inputDir
#qetest.dirFilter=org.apache.qetest.xsl.ConformanceDirRules
# Set filter for files within dirFilter-found directories
#qetest.fileFilter=org.apache.qetest.xsl.ConformanceFileRules
#---- Choose tests via a specific list (...either/or) ----
# Set fileList to specify a list of files yourself
# Using a fileList means filtering above is not done
#qetest.fileList=listOfFiles.txt
#---- Choose other test filtering options ----
# Specify files that have the xsl embedded in the .xml file
# Specific lists for different testTypes may be kept
conf.embedded=embed01.xml;embed02.xml;embed07.xml
# Specify a file differ for the output files
qetest.fileChecker=org.apache.qetest.xsl.XHTFileCheckService
# Specify files to be skipped, and not tested at all
#qetest.excludes=lre01.xsl;lre02.xsl
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]