[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: [xslt-conformance] Re: Test Suite Issues/creating test runner
Here is a sketch of how we thought a test lab would take the XML-based catalog of test cases and produce a script appropriate to their operating system. In this example, it's a batch file for an MS-DOS command window. Parts of command lines would be altered to suit the processor under test. As an alternative, the "check" portion shows how a lab could choose to produce separate batch files to hide some details so that this batch file could be more uniform across processors. .................David Marston <xsl:output method="text" /> <xsl:template match="/"> <xsl:text>@ECHO OFF </xsl:text> <!-- Resulting batch file takes an argument to specify where output goes. --> <xsl:text>set OUTDIR=\results\xalan\%1 </xsl:text> <!-- Whatever else goes at the top of the batch file --> <xsl:apply-templates select="test-suite/test-catalog/test-case"/> <xsl:text>ECHO Done! </xsl:text> <!-- Whatever else goes at the bottom of the batch file --> </xsl:template> <xsl:template match="test-case"> <!-- The path to the directory is used more than once below, so assemble it now. Need to change / to \. --> <xsl:variable name="dir" select="concat(../@submitter,'\',translate(file-path,'/','\'))"/> <!-- Also construct the string that will be the path to the output file, as written into the batch file. We want %OUTDIR% in the batch file. --> <xsl:variable name="out" select="concat('%OUTDIR%\',$dir,'\',scenario/output-file[@role='principal'])"/> <!-- Now start putting out command lines for each test. --> <xsl:value-of select="concat('cd \tests\',$dir)"/><xsl:text> </xsl:text> <!-- Could check file existence here. --> <xsl:choose> <xsl:when test="scenario/@operation='standard'"> <!-- For xalan-C, command line is xalan (inputXML) (stylesheet) >(output) --> <xsl:text>xalan </xsl:text> <xsl:value-of select="translate(scenario/input-file[@role='principal-data'], '/','\')"/><!-- just in case it had a relative path --> <xsl:text> </xsl:text> <xsl:value-of select="scenario/input-file[@role='principal-stylesheet']"/> <xsl:text> ></xsl:text><!-- redirect standard output (for Win98) --> <xsl:value-of select="$out"/> <xsl:text> </xsl:text> </xsl:when> <xsl:when test="scenario/@operation='embedded'"> <!-- For xalan-C, command line is xalan (inputXML) >(output) --> <xsl:text>xalan </xsl:text> <xsl:value-of select="scenario/input-file[@role='principal-data']"/> <!-- can't be a relative path under this scenario --> <xsl:text> ></xsl:text><!-- redirect standard output (for Win98) --> <xsl:value-of select="$out"/> <xsl:text> </xsl:text> </xsl:when> <xsl:otherwise><!-- Other scenarios --> <xsl:text>REM test case </xsl:text> <xsl:value-of select="@id"/> <xsl:text> has a scenario we haven't coded yet. </xsl:text> </xsl:otherwise> </xsl:choose> <!-- Assume that we have a batch file "check" that normalizes output and compares it to the reference output. Arguments: filetype subjectfile reference --> <xsl:for-each select="scenario/output-file"> <!-- Iterate over both principal and supplemental outputs --> <xsl:text>call check </xsl:text> <xsl:value-of select="./@compare"/> <xsl:text> </xsl:text> <xsl:value-of select="concat('%OUTDIR%\',$dir,'\',.)"/> <xsl:text> </xsl:text> <xsl:value-of select="concat('\gold\',$dir,'\',.)"/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC