- From: Norman Walsh <ndw@nwalsh.com>
- Date: Sun, 14 Jun 2009 14:55:52 -0400
- To: XProc Dev <xproc-dev@w3.org>
- Message-ID: <m2hbyik5l3.fsf@nwalsh.com>
Hello implementors, I've taken a stab at creating tests for a few of the serialization options. It's tricky because what needs to be tested is *the serialization of the result* and not the result itself. To that end, here's what the tests look like: <t:test xmlns:t="http://xproc.org/ns/testsuite" xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="http://www.w3.org/ns/xproc-step" xmlns:err="http://www.w3.org/ns/xproc-error"> <t:title>Serialization test doctype-system-001</t:title> <t:input port='source' href="../doc/s-input.xml"/> <t:pipeline> <p:declare-step name="main"> <p:input port="source"/> <p:output port="uri"/> <p:store href="file:///tmp/doctype-system-001.xml" doctype-system="http://tests.xproc.org/tests/doc/s-input.dtd"/> <p:string-replace match="c:result/text()"> <p:input port="source"> <p:inline><c:result>uri</c:result></p:inline> </p:input> <p:with-option name="replace" select="concat('"',p:base-uri(/),'"')"> <p:pipe step="main" port="source"/> </p:with-option> </p:string-replace> </p:declare-step> </t:pipeline> <t:compare-pipeline> <p:declare-step name="main"> <p:input port="uri"/> <p:output port="result"/> <p:exec name="diff" command="serdiff" source-is-xml="false" result-is-xml="false"> <p:input port="source"><p:empty/></p:input> <p:with-option name="args" select="concat('/tmp/doctype-system-001.xml ', p:resolve-uri('../serialization/results/doctype-system-001.xml', /c:result))"> <p:pipe step="main" port="uri"/> </p:with-option> </p:exec> <p:identity> <p:input port="source"> <p:pipe step="diff" port="exit-status"/> </p:input> </p:identity> </p:declare-step> </t:compare-pipeline> <t:output port="result"><c:result>0</c:result></t:output> </t:test> The way this works is like this: 1. The main pipeline uses p:store to write the results into /tmp 2. It passes that location to the compare pipeline 3. The compare pipeline uses serdiff to compare the serialized forms You can find my very crude initial implementation of serdiff at http://tests.xproc.org/tests/bin/serdiff The idea is that over time serdiff can grow to filter out the non-essential differences between outputs. Right now, it just does a straight compare. Comments, thoughts, other implementors results against the serialization tests most welcome. Be seeing you, norm -- Norman Walsh <ndw@nwalsh.com> | Democracy consists of choosing your http://nwalsh.com/ | dictators, after they've told you what | you think it is you want to hear.--Alan | Corenk
Received on Sunday, 14 June 2009 18:56:36 UTC