# Use org.apache.qetest.xsl.ConformanceTest test with this properties 
#   file to iterate over all the 'conf' 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=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-conf

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

#---- Choose processor: flavors supported: xalan|trax|other...
flavor=trax

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

#---- Specify files that have the xsl embedded in them.
embedded=embed01.xsl;embed02.xsl;embed07.xsl

# Set up to use latest XML diff checker
fileChecker=org.apache.qetest.xsl.XHTFileCheckService

# Set excludes to exclude specific tests: foo.xsl;bar.xsl;goo.xsl
#excludes=lre01.xsl;lre02.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

#---- 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=99

# 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

