- From: <Toman_Vojtech@emc.com>
- Date: Mon, 15 Jun 2009 02:53:24 -0400
- To: <xproc-dev@w3.org>
Hi Norm, Thanks for this, I think this is a really good start. So if I understand your proposal correctly, the main pipeline returns the base URI of the source document (that is, not the serialized one), and the compare pipeline then finds the serialized document + the expected result based on this base URI. Right now, the locations of the files are hard coded in the compare pipeline, but perhaps this could be generalized? I mean, in most cases I expect the compare pipeline to always do about the same thing: 1. Take the source base URI 2. Extract the file name from the base URI and use it for locating the serialized document in /tmp 3. Extract the file name from the base URI and use it for locating the expected result document in ../serialization/results 4. Run serdiff We could then move the compare pipeline to a separate file and just import it using <p:compare-pipeline href="...">. -- A related question: how do XSLT/XQuery test serialization? Do they at all? Regards, Vojtech > -----Original Message----- > From: xproc-dev-request@w3.org > [mailto:xproc-dev-request@w3.org] On Behalf Of Norman Walsh > Sent: Sunday, June 14, 2009 8:56 PM > To: XProc Dev > Subject: Testing serialization options > > 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 Monday, 15 June 2009 06:54:14 UTC