##########################################################################
# Copyright 2001-2004 The Apache Software Foundation.
#
# Licensed 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.
##########################################################################
# Use org.apache.qetest.xsl.ConformanceTest test with this properties 
#   file to iterate over all the 'contrib' tests
# This file includes descriptive comments for most major options
# Most other xml-xalan\test tests use similar options

#---- Choose locations: where to find files, where to log to
# testDir is where root of test xml/xsl files are
inputDir=\\xml-xalan\\test\\tests\\conf
# inputDir=\\xml-xalan\\test\\tests\\temp

# goldDir is where the 'gold' files to check against live
goldDir=\\xml-xalan\\test\\tests\\conf-gold

# outDir is where we put the actual output files and any logs or error dumps
outputDir=.\\results-s2s

# All test output will be saved in this file
logFile=.\\results-s2s\\ConfTest.xml

#---- Choose processor: flavors supported: xalan|trax|other...
# Update for StylesheetTestletDriver/trax.sax 25-Jun-01 -sc 
flavor=trax.sax

#---- Choose tests: Filter to only run specific sets of tests
# Set category to run only the single named directory
# category=axes

# Set excludes to exclude specific tests: foo.xsl;bar.xsl;goo.xsl
# impincl12.xsl excluded because it outputs accesses file via http inside lotus firewall.
excludes=impincl12.xsl

# Run a specific list of files in the named file (see XLDirectoryIterator.java)
#fileList=myListOfFiles.txt

# Uncomment noErrTest to skip running any ./err subdir tests
noErrTest=true

fileChecker=org.apache.qetest.xsl.XHTFileCheckService

#---- Choose output: How much/what kinds of info should we log
# Choose output: How much logging info is saved: between 0 (very little) and 99 (lots)
loggingLevel=50

# If we should save performance-oriented info in the logfile
perfLogging=true

# Set debug for advanced debugging of the tests themselves
#debug=true

#---- Choose a liaison: only valid with flavor=xalan
# XDTM  Xalan-J 1.x/Xerces DTM -default- (uses xerces.jar)
#liaison=org.apache.xalan.xpath.dtm.DTMLiaison
# XDOM  Xalan-J 1.x/Xerces DOM (uses xerces.jar)
#liaison=org.apache.xalan.xpath.xdom.XercesLiaison

