##
# 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.
##
# 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
accept.inputDir=tests/accept
api.inputDir=tests/api
conf.inputDir=tests/conf
conferr.inputDir=tests/conferr
conferr.xsltc.inputDir=tests/conferr
contrib.inputDir=tests/contrib
exslt.inputDir=tests/exslt

# goldDir is where the 'gold' or reference files to check against live
accept.goldDir=tests/accept-gold
api.goldDir=tests/api-gold
conf.goldDir=tests/conf-gold
conferr.goldDir=results-conferr/gold-unused
conferr.xsltc.goldDir=results-conferr/gold-unused
contrib.goldDir=tests/contrib-gold
exslt.goldDir=tests/exslt-gold

# outDir is where we put the actual output files
accept.outputDir=results-accept
api.outputDir=results-api
conf.outputDir=results-conf
conferr.outputDir=results-conferr
conferr.xsltc.outputDir=results-conferr-xsltc
contrib.outputDir=results-contrib
exslt.outputDir=results-exslt

# The test results log will be saved in this file
accept.logFile=results-accept/results.xml
api.logFile=results-api/results.xml
conf.logFile=results-conf/results.xml
conferr.logFile=results-conferr/results.xml
conferr.xsltc.logFile=results-conferr-xsltc/results.xml
contrib.logFile=results-contrib/results.xml
exslt.logFile=results-exslt/results.xml

# Whether or not to consult processor specific golds 
accept.processor=XalanJ-I
accept.xsltc.processor=XalanJ-C
smoketest.accept.processor=XalanJ-I
smoketest.xsltc.accept.processor=XalanJ-C

conf.processor=XalanJ-I
conf.xsltc.processor=XalanJ-C
smoketest.conf.processor=XalanJ-I
smoketest.xsltc.conf.processor=XalanJ-C
conferr.xsltc.processor=XalanJ-C

# Name of test (rename Accept test's result files)

#---- 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=40
# By default, large conf test reports FAILSONLY
accept.ConsoleLogger.loggingLevel=20
conf.ConsoleLogger.loggingLevel=20
conferr.ConsoleLogger.loggingLevel=20
exslt.ConsoleLogger.loggingLevel=20

# 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

# Exclusion lists based on specific flavors
# Some tests are not valid when outputting DOMs
# conflictres19.xsl mismatch-value;TEXT_NODE(#text)len=85;TEXT_NODE(#text)len=85;lengths do not match
trax.dom.excludes=conflictres19.xsl
# A Testlet class defines the actual algorithim used to 
#   test each stylesheet found; several different testlets available
# The default StylesheetTestlet does a simple transform and validates output
qetest.testlet=org.apache.qetest.xsl.StylesheetTestlet

# The StylesheetErrorTestlet tests negative tests that throw exceptions
conferr.testlet=org.apache.qetest.xsl.StylesheetErrorTestlet

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


#---- Special: Smoketest settings and XSLTestHarness tests ----
# Various other overrides for the smoketest; note that 
#   the prefixes are ripped off in the smoketest target in build.xml
# smoketest parent output location: used in test.properties/build.xml
smoketest.outputDir=smoketest
# Runs the conformance test once with defaults
smoketest.conf.inputDir=tests/conf
smoketest.conf.goldDir=tests/conf-gold
smoketest.conf.outputDir=smoketest/conf
smoketest.conf.logFile=smoketest/results-conf.xml
smoketest.conf.passFile=smoketest/Pass-StylesheetTestletDriver.xml
smoketest.conf.embedded=embed01.xml;embed02.xml;embed07.xml
smoketest.conf.ConsoleLogger.loggingLevel=20
# Bugzilla5389  attribset40.xsl
# Bugzilla10616 copy56.xsl;copy58.xsl;copy59.xsl;copy60.xsl
# Bugzilla14999 idkey31.xsl
# Bugzilla????? numbering79 -- fails to run on Sun JDK1.4 on GUMP machine; JDK bug??
# Bugzilla17400 position112.xsl;position113.xsl
smoketest.conf.normal.excludes=attribset40.xsl;copy56.xsl;copy58.xsl;copy59.xsl;copy60.xsl;idkey31.xsl;numbering79.xsl;position112.xsl;position113.xsl
smoketest.conf.supplemental.excludes=

smoketest.extensions.excludes=javaBugzilla3722.xsl;libraryNodeset05.xsl;libraryNodeset06.xsl;libraryNodeset07.xsl;libraryNodeset08.xsl

# Runs a selected set of known passing API tests
smoketest.api.tests=trax.EmbeddedStylesheetTest;trax.ErrorListenerTest;trax.ErrorListenerAPITest;trax.ExamplesTest;trax.OutputPropertiesTest;trax.TemplatesAPITest;trax.TransformerAPITest;trax.TransformerFactoryAPITest;trax.SystemIdTest;trax.SystemIdImpInclTest;trax.URIResolverTest;;trax.dom.DOMResultAPITest;trax.dom.DOMSourceAPITest;;trax.sax.SAXResultAPITest;trax.sax.SAXSourceAPITest;trax.sax.TemplatesHandlerAPITest;trax.sax.TransformerHandlerAPITest;trax.sax.TransformerHandlerTest;;trax.stream.StreamResultAPITest;trax.stream.StreamSourceAPITest;;xalanj2.FactoryFeatureTest;xalanj2.ProgrammaticDOMTest;xalanj2.SerializedStylesheetTest;xalanj2.TraceListenerTest;xalanj2.TransformStateAPITest;xalanj2.TransformStateTest;xalanj2.TestXPathAPI;;OutputSettingsTest;;ParameterTest;SAXTransformerFactoryAPITest;
smoketest.api.inputDir=tests/api
smoketest.api.goldDir=tests/api-gold
smoketest.api.outputDir=smoketest/api
smoketest.api.logFile=smoketest/results-api.xml
smoketest.api.passFile=smoketest/Pass-Harness.xml

smoketest.accept.inputDir=tests/accept
smoketest.accept.goldDir=tests/accept-gold
smoketest.accept.outputDir=smoketest/accept
smoketest.accept.logFile=smoketest/results-accept.xml
smoketest.accept.passFile=smoketest/Pass-Accept.xml

# Runs the extension tests
smoketest.extensions.inputDir=tests/extensions
smoketest.extensions.goldDir=tests/extensions-gold
smoketest.extensions.outputDir=smoketest/extensions
smoketest.extensions.logFile=smoketest/extensions/results-extensions.xml
smoketest.extensions.passFile=smoketest/extensions/Pass-StylesheetTestletDriver.xml
smoketest.extensions.testlet=org.apache.qetest.xsl.ExtensionTestlet
# Note: skip javascript extensions for now since they require js.jar
smoketest.extensions.category=java;library

#---- Special: Smoketest settings and XSLTestHarness tests ----
# Various other overrides for the smoketest; note that 
#   the prefixes are ripped off in the smoketest target in build.xml
# smoketest parent output location: used in test.properties/build.xml
smoketest.xsltc.Processor.setAttribute.indent-number=0
smoketest.xsltc.conf.fileChecker=org.apache.qetest.xsl.XHTFileCheckServiceXSLTC
smoketest.xsltc.outputDir=smoketest.xsltc
# Runs the conformance test once with defaults
smoketest.xsltc.conf.inputDir=tests/conf
smoketest.xsltc.conf.goldDir=tests/conf-gold
smoketest.xsltc.conf.outputDir=smoketest.xsltc/conf
smoketest.xsltc.conf.logFile=smoketest.xsltc/results-conf.xml
smoketest.xsltc.conf.passFile=smoketest.xsltc/Pass-StylesheetTestletDriver.xml
smoketest.xsltc.conf.embedded=embed01.xml;embed07.xml
smoketest.xsltc.conf.ConsoleLogger.loggingLevel=20

# Bugzilla????  attribset15.xsl;attribset23.xsl - are permitted to fail (discretionary item)
# Bugzilla14999 idkey31.xsl
# Bugzilla15253 idkey49.xsl
# Bugzilla????? math111.xsl
# Bugzilla14610 output63.xsl
# Bugzilla15326 whitespace35.xsl
# Bugzilla????? numbering79 -- fails to run on Sun JDK1.4 on GUMP machine; JDK bug??
# embed02.xml - testcase is actually passing; harness issue to be resolved

smoketest.xsltc.conf.normal.excludes=attribset15.xsl;attribset23.xsl;idkey31.xsl;idkey49.xsl;math111.xsl;numbering79.xsl;output63.xsl;whitespace35.xsl

smoketest.xsltc.conf.supplemental.excludes=

smoketest.xsltc.accept.Processor.setAttribute.indent-number=0
smoketest.xsltc.accept.inputDir=tests/accept
smoketest.xsltc.accept.goldDir=tests/accept-gold
smoketest.xsltc.accept.outputDir=smoketest.xsltc/accept
smoketest.xsltc.accept.logFile=smoketest.xsltc/results-accept.xml
smoketest.xsltc.accept.passFile=smoketest.xsltc/Pass-Accept.xml

# Used by both the minitest and smoketest targets
minitest.inputDir=tests/api
minitest.goldDir=tests/api-gold
minitest.outputDir=smoketest/
minitest.logFile=smoketest/Minitest.xml
minitest.passFile=smoketest/Pass-Minitest.xml

# A listing of all normal API tests currently available, except Minitest
#   Note tests do not all include package names since they'll 
#   actually be loaded by QetestUtils.testClassForName()
# Note: some tests are Xalan-specific; SmoketestOuttakes is expected to fail
harness.tests=trax.EmbeddedStylesheetTest;trax.ErrorListenerAPITest;trax.ErrorListenerTest;trax.ExamplesTest;trax.OutputPropertiesTest;trax.ParameterTest;trax.TemplatesAPITest;trax.TransformerAPITest;trax.TransformerFactoryAPITest;trax.SystemIdTest;trax.SystemIdImpInclTest;trax.URIResolverTest;;trax.dom.DOMResultAPITest;trax.dom.DOMSourceAPITest;;trax.sax.SAXResultAPITest;trax.sax.SAXSourceAPITest;trax.sax.SAXTransformerFactoryAPITest;trax.sax.TemplatesHandlerAPITest;trax.sax.TransformerHandlerAPITest;trax.sax.TransformerHandlerTest;;trax.stream.StreamResultAPITest;trax.stream.StreamSourceAPITest;;xalanj2.FactoryFeatureTest;xalanj2.ProgrammaticDOMTest;xalanj2.SerializedStylesheetTest;xalanj2.TraceListenerTest;xalanj2.TransformStateAPITest;xalanj2.TransformStateTest;xalanj2.TestXPathAPI;xalanj2.SmoketestOuttakes;;OutputSettingsTest;;dtm.TestDTM;dtm.TestDTMIter;dtm.TestDTMTrav;dtm.TimeDTMIterDeep;dtm.TimeDTMTravDeep
harness.threads.testlet=org.apache.qetest.xsl.ThreadedStylesheetTestlet
harness.threads.fileList=threads.filelist

#---- Special: used to run threaded tests, which use a specific fileList format ----
threads.inputDir=tests/api
threads.goldDir=tests/api
threads.outputDir=results-threads/
threads.logFile=results-threads/results.xml
threads.fileList=threads.filelist
threads.testlet=org.apache.qetest.xsl.ThreadedStylesheetTestlet

#---- Special: used to run bugzilla Testlets and tests ----
bugzilla.inputDir=tests/bugzilla
bugzilla.goldDir=tests/bugzilla
bugzilla.outputDir=results-bugzilla/
bugzilla.logFile=results-bugzilla/results.xml

#---- Special: used to run extensions Testlets and tests ----
extensions.inputDir=tests/extensions
extensions.goldDir=tests/extensions-gold
extensions.outputDir=results-extensions/
extensions.logFile=results-extensions/results.xml
extensions.testlet=org.apache.qetest.xsl.ExtensionTestlet

extensions.with-ibm-bsf.inputDir=tests/extensions
extensions.with-ibm-bsf.goldDir=tests/extensions-gold
extensions.with-ibm-bsf.outputDir=results-extensions-with-ibm-bsf/
extensions.with-ibm-bsf.logFile=results-extensions-with-ibm-bsf/results.xml
extensions.with-ibm-bsf.testlet=org.apache.qetest.xsl.ExtensionTestlet

#---- Special: used in conf.xsltc target temporarily ----
conf.xsltc.inputDir=tests/conf
conf.xsltc.goldDir=tests/conf-gold
conf.xsltc.outputDir=results-conf_xsltc
conf.xsltc.logFile=results-conf_xsltc/results.xml
conf.xsltc.fileChecker=org.apache.qetest.xsl.XHTFileCheckServiceXSLTC

#---- Special: used in accept.xsltc target temporarily ----
accept.xsltc.inputDir=tests/accept
accept.xsltc.goldDir=tests/accept-gold
accept.xsltc.outputDir=results-accept.xsltc
accept.xsltc.logFile=results-accept.xsltc/results.xml
accept.xsltc.fileChecker=org.apache.qetest.xsl.XHTFileCheckServiceXSLTC

# The PerfTestlet iterates through a number of transforms with timing output
perf.testlet=org.apache.qetest.xsl.PerfTestlet
perf.inputDir=tests/perf
perf.goldDir=tests/perf-gold
perf.outputDir=results-perf
perf.logFile=results-perf/results.xml
perf.runId=xalan
perf.iterations=5

#---- Special: used in perf.xsltc target temporarily ----
perf.xsltc.testlet=org.apache.qetest.xsl.PerfTestlet
perf.xsltc.inputDir=tests/perf
perf.xsltc.goldDir=tests/perf-gold
perf.xsltc.outputDir=results-perf_xsltc
perf.xsltc.logFile=results-perf_xsltc/results.xml
perf.xsltc.runId=xsltc
perf.xsltc.iterations=5


# End of File
