- From: Jonathan Marsh via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 04 May 2006 03:19:40 +0000
- To: public-ws-desc-eds@w3.org
Update of /sources/public/2002/ws/desc/test-suite/results In directory hutz:/tmp/cvs-serv10914/test-suite/results Added Files: combine.xslt canonicalize-id-wsdlcm.xslt implementations.xml results.xsl canonicalize-wsdlcm.xslt compare-wsdlcm.xslt Log Message: Initial check-in of results, canonicalization stylesheets, and results rollup. --- NEW FILE: compare-wsdlcm.xslt --- <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <!-- Stylesheet to compare two WSDL Component Model serialization format (wsdlxml) documents Created: March 27, 2006, Jonathan Marsh, Microsoft. jmarsh@microsoft.com --> <xsl:param name="path" /> <xsl:param name="aspirant" /> <xsl:param name="archetype" /> <xsl:template match="/"> <xsl:processing-instruction name="xml-stylesheet">type="text/xsl" href="../../results.xsl"</xsl:processing-instruction> <comparing aspirant="{substring-after(substring-after($aspirant,'/'),'/')}" archetype="../../{$archetype}" source="../../../documents/good/{substring-before(substring-after($aspirant,'/'),'.canonical.wsdlcm')}.wsdl"> <xsl:call-template name="compare"> <xsl:with-param name="asp" select="document(concat($path,$aspirant))/*"/> <xsl:with-param name="arc" select="document(concat($path,$archetype))/*"/> </xsl:call-template> </comparing> </xsl:template> <xsl:template name="compare"> <xsl:param name="asp"/> <xsl:param name="arc"/> <xsl:if test="count($asp) + count($arc) != 0"> <xsl:choose> <xsl:when test="count($asp) = 0"> <failure> <xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="$arc"/></xsl:attribute> <p>Missing element "<xsl:value-of select="local-name($arc)"/>" in namespace "<xsl:value-of select="namespace-uri($arc)"/>".</p> </failure> </xsl:when> <xsl:when test="local-name($asp) != local-name($arc) or namespace-uri($asp) != namespace-uri($arc)"> <failure> <xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="$asp"/></xsl:attribute> <p>Expected element "<xsl:value-of select="local-name($arc)"/>" in namespace "<xsl:value-of select="namespace-uri($arc)"/>", found element "<xsl:value-of select="local-name($asp)"/>" in namespace "<xsl:value-of select="namespace-uri($asp)"/>".</p> </failure> </xsl:when> <xsl:otherwise> <!-- compare attributes --> <xsl:if test="count($asp/@*) != count($arc/@*)"> <failure> <xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="$asp"/></xsl:attribute> <p>Different number of attributes (Expected <xsl:value-of select="count($arc/@*)"/> found <xsl:value-of select="count($asp/@*)"/>).</p> </failure> </xsl:if> <xsl:for-each select="$arc/@*"> <xsl:variable name="asp-att" select="$asp/@*[local-name(.)=local-name(current()) and namespace-uri(.)=namespace-uri(current())]"/> <xsl:if test="not($asp-att)"> <failure> <xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="$asp"/></xsl:attribute> <p>Attribute "<xsl:value-of select="name(.)"/>" not found.</p> </failure> </xsl:if> <xsl:if test=". != $asp-att"> <failure> <xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="$asp"/></xsl:attribute> <p>Attribute "<xsl:value-of select="name(.)"/>" value mismatch (found "<xsl:value-of select="$asp-att"/>", expected "<xsl:value-of select="."/>").</p> </failure> </xsl:if> </xsl:for-each> <!-- compare values --> <xsl:if test="text() and not(*)"> <xsl:if test="$asp/text() != $arc/text()"> <failure> <xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="$asp"/></xsl:attribute> <p>Element "<xsl:value-of select="name(.)"/>" value mismatch (found "<xsl:value-of select="$asp/text()"/>", expected "<xsl:value-of select="$arc/text()"/>").</p> </failure> </xsl:if> </xsl:if> <!-- compare children --> <xsl:if test="count($asp/*) != count($arc/*)"> <failure> <xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="$asp"/></xsl:attribute> <p>Different number of children (Expected <xsl:value-of select="count($arc/*)"/> found <xsl:value-of select="count($asp/*)"/>).</p> </failure> </xsl:if> <xsl:for-each select="$arc/*"> <xsl:variable name="p" select="position()"/> <xsl:call-template name="compare"> <xsl:with-param name="asp" select="$asp/*[position()=$p]"/> <xsl:with-param name="arc" select="."/> </xsl:call-template> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> <xsl:template match="*" mode="xpath"> <xsl:apply-templates select="parent::*" mode="xpath"/>/<xsl:value-of select="name(.)"/> </xsl:template> <xsl:template match="@*" mode="xpath"> <xsl:apply-templates select="parent::*" mode="xpath"/>/@<xsl:value-of select="name(.)"/> </xsl:template> </xsl:stylesheet> --- NEW FILE: results.xsl --- <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:variable name="implementations" select="document('../desc/test-suite/results/implementations.xml')"/> <xsl:variable name="test-suite" select="document('../desc/test-suite/test-suite.xml')"/> <xsl:template match="comparing"> <html> <head> <title>Test Pass Results</title> </head> <body> <h3>Test Pass Results</h3> <p>Comparing <a href="{@aspirant}"><xsl:value-of select="@aspirant"/></a> with <a href="{@archetype}"><xsl:value-of select="@archetype"/></a> for testcase <a href="{@source}"><xsl:value-of select="@source"/></a></p> <xsl:for-each select="failure"> <dl> <dt>xpath: <xsl:value-of select="@xpath"/></dt> <dd><xsl:copy-of select="node()"/></dd> </dl> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> --- NEW FILE: canonicalize-wsdlcm.xslt --- <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wsdlcm="http://www.w3.org/2002/ws/desc/wsdl/component"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <!-- Stylesheet to canonicalize the WSDL Component Model serialization format (wsdlxml) - canonicalizes xml:id and @ref attributes Created: March 27, 2006, Jonathan Marsh, Microsoft. jmarsh@microsoft.com --> <!-- identity transform --> <xsl:template match="*"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="*[not(node())]"> <!-- prevent unwanted whitespace from distracting human readers ;-) --> <xsl:copy> <xsl:apply-templates select="@*"/> </xsl:copy> </xsl:template> <xsl:template match="@*"> <xsl:copy-of select="."/> </xsl:template> <xsl:template match="comment()"> <xsl:copy-of select="."/> </xsl:template> <!-- rules to order children of particular WSDL elements --> <!-- 1. Description.{interfaces} - sort by Interface.{name} 2. Description.{bindings} - sort by Binding.{name} 3. Description.{services} - sort by Service.{name} 4. Description.{elementDeclarations} - sort by ElementDeclaration.{name} 5. Description.{typeDefinitions} - sort by TypeDefinition.{name} 6. Interface.{extendedInterfaces} - sort by Interface.{name} 7. Interface.{interfaceFaults} - sort by InterfaceFault.{name} 8. Interface.{operations} - sort by InterfaceOperation.{name} 15. Service.{endpoints} - sort by Endpoint.{name} --> <xsl:template match="wsdlcm:interfaces | wsdlcm:bindings | wsdlcm:services | wsdlcm:elementDeclarations | wsdlcm:typeDefinitions | wsdlcm:extendedInterfaces | wsdlcm:interfaceFaults | wsdlcm:operations | wsdlcm:endpoints"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates select="*"> <xsl:sort select="wsdlcm:name/wsdlcm:namespaceName"/> <xsl:sort select="wsdlcm:name/wsdlcm:localName"/> </xsl:apply-templates> </xsl:copy> </xsl:template> <!-- 9. InterfaceOperation.{interfaceMessageReferences} - sort by InterfaceMessageReference.{message label} 10. InterfaceOperation.{interfaceFaultReferences} - sort by InterfaceFaultReference.{interface fault}.{name}, then by InterfaceFaultReference.{message label} 11. Binding.{bindingFaults} - sorty by BindingFault.{interfaceFault}.{name} 12. Binding.{operations} - sort by BindingOperation.{interfaceOperation}.{name} 13. BindingOperation.{bindingMessageReferences} - sort by BindingMessageReference.{interface message reference}.{name} 14. BindingOperation.{bindingFaultReferences} - sort by BindingFaultReference.{interface fault reference}.{interface fault}.{name}, then by BindingFaultReference.{interface fault reference}.{message label} 16. *.{features} - sort by Feature.{ref} 17. *.{properties} - sort by Property.{ref} --> </xsl:stylesheet> --- NEW FILE: canonicalize-id-wsdlcm.xslt --- <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <!-- Stylesheet to canonicalize the WSDL Component Model serialization format (wsdlxml) - canonicalizes xml:id and @ref attributes Created: March 27, 2006, Jonathan Marsh, Microsoft. jmarsh@microsoft.com --> <!-- identity transform --> <xsl:template match="*"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="*[not(node())]"> <!-- prevent unwanted whitespace from distracting human readers ;-) --> <xsl:copy> <xsl:apply-templates select="@*"/> </xsl:copy> </xsl:template> <xsl:template match="@*"> <xsl:copy-of select="."/> </xsl:template> <xsl:template match="comment()"> <xsl:copy-of select="."/> </xsl:template> <!-- rules to canonicalize xml:id attribute values and references to them --> <xsl:template match="@xml:id"> <xsl:attribute name="xml:id">c<xsl:value-of select="count(ancestor::*[@xml:id] | preceding::*[@xml:id])"/></xsl:attribute> </xsl:template> <xsl:template match="@ref"> <xsl:for-each select="//*/@xml:id[.=current()]"> <xsl:attribute name="ref">c<xsl:value-of select="count(ancestor::*[@xml:id] | preceding::*[@xml:id])"/></xsl:attribute> </xsl:for-each> </xsl:template> </xsl:stylesheet> --- NEW FILE: implementations.xml --- <?xml-stylesheet type="text/xsl" href="combine.xslt"?> <implementations> <implementation name="Woden" results-folder="Woden"/> <implementation name="WSDL XSLT" results-folder="wsdl-xslt"/> <implementation name="Canon" results-folder="Canon"/> </implementations> --- NEW FILE: combine.xslt --- <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="combine.xslt"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:variable name="implementations" select="."/> <xsl:variable name="test-suite" select="document('../test-suite.xml')"/> <xsl:template match="/"> <html> <head> <title>Results</title> <style type="text/css"> body {font-family:sans-serif} td {border:1px solid #DDDDDD} .passed {background-color:green} .failed {background-color:orange} .disaster {background-color:red} </style> </head> <body> <h3>Results</h3> <table> <tr> <td>Testcase</td> <td>WSDL</td> <xsl:for-each select="$implementations//implementation"> <td><xsl:value-of select="@name"/> failures</td> </xsl:for-each> </tr> <xsl:for-each select="$test-suite/test-suite/test-case[contains(@id, 'good')]/file"> <xsl:variable name="testcase" select="."/> <tr> <td><xsl:value-of select="../@id"/></td> <td><xsl:value-of select="."/></td> <xsl:for-each select="$implementations//implementation"> <xsl:variable name="failures" select="count(document(concat(@results-folder,'/',$testcase/../folder,'/',substring-before($testcase,'.wsdl'),'-results.xml'))/comparing/failure)"/> <td> <xsl:choose> <xsl:when test="$failures = 0"><xsl:attribute name="class">passed</xsl:attribute></xsl:when> <xsl:when test="$failures < 6"><xsl:attribute name="class">failed</xsl:attribute></xsl:when> <xsl:otherwise><xsl:attribute name="class">disaster</xsl:attribute></xsl:otherwise> </xsl:choose> <xsl:value-of select="$failures"/> [<a href="{@results-folder}/{$testcase/../folder}/{substring-before($testcase,'.wsdl')}-results.xml">log</a>] </td> </xsl:for-each> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Received on Thursday, 4 May 2006 03:19:57 UTC