##########################################################################
# 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\\temp
# inputDir=\\xml-xalan\\test\\tests\\conf
inputDir=tests\\conf

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

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

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

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

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

# Set excludes to exclude specific tests: foo.xsl;bar.xsl;goo.xsl
# conflictres19.xsl excluded because it relies on the order of attribute and namespace nodes.
# idkey30.xsl excluded because it uses hash values instead of node IDs for generate-id.
# lre13.xsl excluded because it tries to write text node directly to root (need document fragment).
# output26.xsl excluded because it tries to write text node directly to root (need document fragment).
# output46.xsl excluded because it produces multirooted result tree (need document fragment).
# output76.xsl excluded because it tries to write text node directly to root (need document fragment).
# select07.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort22.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort23.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort24.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort25.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort30.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort31.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort35.xsl excluded because it tries to write text node directly to root (need document fragment).
# sort37.xsl excluded because it tries to write text node directly to root (need document fragment).
excludes=conflictres19.xsl;idkey30.xsl;lre13.xsl\
;output26.xsl;output46.xsl;output76.xsl\
;select07.xsl\
;sort22.xsl;sort23.xsl;sort24.xsl;sort25.xsl;sort30.xsl;sort31.xsl;sort35.xsl;sort37.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

