<RegressionTests>
<!--
  Within the following test descriptions the possible elements are:
    Element Name    Description
     testname       Plain text name of test
     execpath       pathname for test program(s)
     testprog       program to run for the test 
     flag           flags for program (may have several)
     file           filename of input file (several, or glob ok)
     exclfile       filename to be excuded (several, or glob ok)
     srcdir         global source directory for input file(s)
     srcsub         subdirectory for input
     resdir         directory for results file(s)
     ressub         subdirectory for results    
     resext         extension for expected result
     reserrext      extension for error result ('None' => no chk)
     extarg         additional argument for command
     errexcl        string to ignore when checking diffs
     stdin          pipe input file to stdin
-->

<!--
  Note:  These defaults are set to run from the root of the build directory
-->
  <defaults>
    <testname>noname</testname>
<!--    <execpath>win32/bin.msvc</execpath> -->
    <execpath>.</execpath>
    <testprog>xmllint</testprog>
    <srcdir>test</srcdir>
    <resdir>result</resdir>
    <file>*.xml</file>
    <reserrext>err</reserrext>
    <errexcl/>
  </defaults>

  <test>
    <testname>XML Regression Tests</testname>
    <errexcl>failed to load external entity</errexcl>
  </test>
  <test>
    <testname>XML Entity Subst Regression Tests</testname>
    <ressub>noent</ressub>
    <flag>--noent</flag>
  </test>
  <test>
    <testname>XML Namespaces Regression Tests</testname>
    <srcsub>namespaces</srcsub>
    <ressub>namespaces</ressub>
  </test>
  <test>
    <testname>xml:id Regression Tests</testname>
    <testprog>testXPath</testprog>
    <srcsub>xmlid</srcsub>
    <ressub>xmlid</ressub>
    <flag>-i</flag>
    <file>id_*.xml</file>
    <extarg>"id('bar')"</extarg>
  </test>
  <test>
    <testname>Error Cases Regression Tests</testname>
    <srcsub>errors</srcsub>
    <ressub>errors</ressub>
  </test>
  <test>
    <testname>Error Cases Stream Regression Tests</testname>
    <srcsub>errors</srcsub>
    <ressub>errors</ressub>
    <reserrext>str</reserrext>
    <flag>--stream</flag>
  </test>
  <test>
    <testname>Reader Regression Tests</testname>
    <resext>rdr</resext>
    <flag>--nonet</flag>
    <flag>--debug</flag>
    <flag>--stream</flag>
    <file>*</file>
    <reserrext>None</reserrext>
  </test>
  <test>
    <testname>Walker Regression Tests</testname>
    <resext>rdr</resext>
    <flag>--nonet</flag>
    <flag>--debug</flag>
    <flag>--walker</flag>
    <file>*</file>
    <reserrext>None</reserrext>
  </test>
  <test>
    <testname>Reader Entities Substitution Regression Tests</testname>
    <resext>rde</resext>
    <flag>--nonet</flag>
    <flag>--debug</flag>
    <flag>--stream</flag>
    <flag>--noent</flag>
    <file>*</file>
    <reserrext>None</reserrext>
  </test>
  <test>
    <testname>SAX Callbacks Regression Tests</testname>
    <testprog>testSAX</testprog>
    <resext>sax</resext>
    <file>*</file>
    <exclfile>utf16*.xml</exclfile>
    <reserrext>None</reserrext>
  </test>
  <test>
    <testname>XML Push Regression Tests</testname>
    <flag>--push</flag>
    <errexcl>failed to load external entity</errexcl>
  </test>
  <test>
    <testname>HTML Regression Tests</testname>
    <testprog>testHTML</testprog>
    <srcsub>HTML</srcsub>
    <ressub>HTML</ressub>
    <file>*</file>
    <exclfile>wired.html</exclfile>
  </test>
  <test>
    <testname>Push HTML Regression Tests</testname>
    <testprog>testHTML</testprog>
    <flag>--push</flag>
    <srcsub>HTML</srcsub>
    <ressub>HTML</ressub>
    <file>*</file>
  </test>
  <test>
    <testname>HTML SAX Regression Tests</testname>
    <testprog>testHTML</testprog>
    <flag>--sax</flag>
    <srcsub>HTML</srcsub>
    <ressub>HTML</ressub>
    <resext>sax</resext>
    <reserrext>None</reserrext>
    <file>*</file>
  </test>
  <test>
    <testname>Push HTML SAX Regression Tests</testname>
    <testprog>testHTML</testprog>
    <flag>--sax</flag>
    <flag>--push</flag>
    <srcsub>HTML</srcsub>
    <ressub>HTML</ressub>
    <resext>sax</resext>
    <reserrext>None</reserrext>
    <file>*</file>
  </test>
  <test>
    <testname>Valid Documents Regression Tests</testname>
    <srcsub>VCM</srcsub>
    <ressub>VCM</ressub>
    <resext>None</resext>
    <reserrext>None</reserrext>
    <file>*</file>
    <flag>--valid</flag>
    <flag>--noout</flag>
    <flag>--nowarning</flag>
  </test>
  <test>
    <testname>Validity Checking Regression Tests</testname>
    <srcsub>VC</srcsub>
    <ressub>VC</ressub>
    <resext>None</resext>
    <reserrext/>
    <file>*</file>
    <flag>--valid</flag>
    <flag>--noout</flag>
  </test>
  <test>
    <testname>General Documents Valid Regression Tests</testname>
    <srcsub>valid</srcsub>
    <ressub>valid</ressub>
    <file>*</file>
    <flag>--valid</flag>
  </test>
  <test>
    <testname>URI Module Regression Tests (1)</testname>
    <testprog>testURI</testprog>
    <srcsub>URI</srcsub>
    <stdin/>
    <ressub>URI</ressub>
    <reserrext>None</reserrext>
    <file>*.data</file>
    <!-- Note - the following arg needs to use ", not ' -->
    <flag>-base "http://foo.com/path/to/index.html?orig#help"</flag>
  </test>
  <test>
    <testname>URI Module Regression Tests (2)</testname>
    <testprog>testURI</testprog>
    <srcsub>URI</srcsub>
    <stdin/>
    <ressub>URI</ressub>
    <reserrext>None</reserrext>
    <file>*.uri</file>
  </test>
  <test>
    <testname>XPath Regression Tests (1)</testname>
    <testprog>testXPath</testprog>
    <srcsub>XPath/expr</srcsub>
    <ressub>XPath/expr</ressub>
    <file>*</file>
    <flag>-f</flag>
    <flag>--expr</flag>
  </test>
  <test>
    <testname>XInclude Regression Tests</testname>
    <srcsub>XInclude/docs</srcsub>
    <ressub>XInclude</ressub>
    <file>*</file>
    <flag>--nowarning</flag>
    <flag>--xinclude</flag>
  </test>
  <test>
    <testname>XInclude xmlReader Regression Tests</testname>
    <srcsub>XInclude/docs</srcsub>
    <ressub>XInclude</ressub>
    <resext>rdr</resext>
    <file>*</file>
    <flag>--nowarning</flag>
    <flag>--xinclude</flag>
    <flag>--stream</flag>
    <flag>--debug</flag>
  </test>
</RegressionTests>
