Re: [xslt] Status of refactored code



On 02/12/09 14:27, Daniel Veillard wrote:
On Sat, Oct 10, 2009 at 05:22:37PM +0200, Nick Wellnhofer wrote:
I wonder what's the status of the refactored code in libxslt that can be
enabled by defining XSLT_REFACTORED. It's been there for some years now
and AFAICS it fixes some bugs that are hard to fix without the refactoring.

I gave it a try about two years ago and I couldn't find any obvious
problems.

   Hum, Kasimier left before we really validated it fully,
if you think it's fine and ready, maybe I should have a look,
I won't have much time before the end of year vacations but
I should be able to looks at things at the end of December

   Any additional testing or regression tests you could provide
showing the bug fixed would be a good step forward :-)

It fixes some of the bugs assigned to Kasimier in Bugzilla:

https://bugzilla.gnome.org/buglist.cgi?query_format=advanced;emailassigned_to1=1;order=Bug%20Number;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;email1=kbuchcik;product=libxslt;emailtype1=substring

I can't really judge if the refactored code is ready. But I didn't find any problems last time I gave it a try.

Attached is a diff of the test output when running the tests with or without the refactored code. The exslt failures definitely look like a problem.


REC/test-7.1.1-3

Fixed by the refactored code


REC/test-2.5-1
general/bug-114
general/bug-164
general/bug-60

Maybe these are just differently worded error and warning messages. I'm not sure.


REC/test-7.1.1

Looks like a result of the fix to bug #341325.


general/bug-150
general/bug-71
namespaces/tst5

Different order of namespace declarations


exslt/functions/function.8 fails with the following error message:

compilation error: file ./function.8.xsl line 22 element param
Redefinition of variable or parameter 'in'.
compilation error: file ./function.8.xsl line 30 element param
Redefinition of variable or parameter 'in'.

exslt/math/max.3 fails with a similar message

This seems to be a problem in the refactored code wrt params of exslt functions. Parameters of a different functions with the same name are rejected as duplicate.

Nick
--- test_current.log	2009-12-02 23:35:26.000000000 +0100
+++ test_refactored.log	2009-12-02 23:31:47.000000000 +0100
@@ -9,18 +9,44 @@
 make[1]: Leaving directory `/home/nik/src/libxslt/tests/REC2'
 make[1]: Entering directory `/home/nik/src/libxslt/tests/REC'
 ## Running REC tests
-test-7.1.1-3 result
-2c2 < <out>SUCCESS</out> --- > <out xmlns:doc="http://example.org/doc";>SUCCESS</out>
+test-2.5-1 result
+1,4c1,2 < compilation error: file ./test-2.5-1.xsl line 6 element exciting-new-1.8-feature < xsltStylePreCompute: unknown xsl:exciting-new-1.8-feature < compilation error: file ./test-2.5-1.xsl line 2 element stylesheet < xsl:version: only 1.0 features are supported --- > compilation warning: file ./test-2.5-1.xsl line 2 element stylesheet > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+test-7.1.1 result
+2,8c2,8 < <axsl:stylesheet xmlns:axsl="http://www.w3.org/1999/XSL/Transform"; xmlns:fo="http://www.w3.org/1999/XSL/Format";> < <axsl:template match="p"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h1"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h2"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h3"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h4"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < </axsl:stylesheet> --- > <xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format"; xmlns:xsl="http://www.w3.org/1999/XSL/Transform";> > <xsl:template match="p"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h1"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h2"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h3"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h4"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > </xsl:stylesheet>
 ## Running REC tests without dictionaries
-test-7.1.1-3 result
-2c2 < <out>SUCCESS</out> --- > <out xmlns:doc="http://example.org/doc";>SUCCESS</out>
+test-2.5-1 result
+1,4c1,2 < compilation error: file ./test-2.5-1.xsl line 6 element exciting-new-1.8-feature < xsltStylePreCompute: unknown xsl:exciting-new-1.8-feature < compilation error: file ./test-2.5-1.xsl line 2 element stylesheet < xsl:version: only 1.0 features are supported --- > compilation warning: file ./test-2.5-1.xsl line 2 element stylesheet > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+test-7.1.1 result
+2,8c2,8 < <axsl:stylesheet xmlns:axsl="http://www.w3.org/1999/XSL/Transform"; xmlns:fo="http://www.w3.org/1999/XSL/Format";> < <axsl:template match="p"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h1"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h2"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h3"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < <axsl:template match="h4"><fo:block><axsl:apply-templates/></fo:block></axsl:template> < </axsl:stylesheet> --- > <xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format"; xmlns:xsl="http://www.w3.org/1999/XSL/Transform";> > <xsl:template match="p"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h1"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h2"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h3"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > <xsl:template match="h4"><fo:block><xsl:apply-templates/></fo:block></xsl:template> > </xsl:stylesheet>
 make[1]: Leaving directory `/home/nik/src/libxslt/tests/REC'
 make[1]: Entering directory `/home/nik/src/libxslt/tests/general'
 ## Running general tests
+bug-114 result
+0a1,2 > compilation warning: file ./bug-114.xsl line 4 element stylesheet > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+bug-150 result
+2c2 < <root xmlns="urn:A" xmlns:b="urn:B" xmlns:a="urn:A"><Product a:ID="1001"/></root> --- > <root xmlns:b="urn:B" xmlns:a="urn:A" xmlns="urn:A"><Product a:ID="1001"/></root>
+bug-164 result
+0a1,2 > compilation warning: file ./bug-164.xsl line 5 element stylesheet > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+bug-60 result
+1,2c1,2 < compilation error: file ./bug-60.xsl line 6 element foo-of < xsltStylePreCompute: unknown xsl:foo-of --- > compilation warning: file ./bug-60.xsl line 5 element result > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+bug-71 result
+2c2 < <pa:Contact xmlns:pa="urn:test:pa" xmlns:rdf="urn:test:rdf" rdf:about="hello"><pa:primaryPhone rdf:about="toto"/></pa:Contact> --- > <pa:Contact xmlns:rdf="urn:test:rdf" xmlns:pa="urn:test:pa" rdf:about="hello"><pa:primaryPhone rdf:about="toto"/></pa:Contact>
 ## Running general tests without dictionaries
+bug-114 result
+0a1,2 > compilation warning: file ./bug-114.xsl line 4 element stylesheet > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+bug-150 result
+2c2 < <root xmlns="urn:A" xmlns:b="urn:B" xmlns:a="urn:A"><Product a:ID="1001"/></root> --- > <root xmlns:b="urn:B" xmlns:a="urn:A" xmlns="urn:A"><Product a:ID="1001"/></root>
+bug-164 result
+0a1,2 > compilation warning: file ./bug-164.xsl line 5 element stylesheet > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+bug-60 result
+1,2c1,2 < compilation error: file ./bug-60.xsl line 6 element foo-of < xsltStylePreCompute: unknown xsl:foo-of --- > compilation warning: file ./bug-60.xsl line 5 element result > Warning: the attribute xsl:version specifies a value different from '1.0'. Switching to forwards-compatible mode. Only features of XSLT 1.0 are supported by this processor.
+bug-71 result
+2c2 < <pa:Contact xmlns:pa="urn:test:pa" xmlns:rdf="urn:test:rdf" rdf:about="hello"><pa:primaryPhone rdf:about="toto"/></pa:Contact> --- > <pa:Contact xmlns:rdf="urn:test:rdf" xmlns:pa="urn:test:pa" rdf:about="hello"><pa:primaryPhone rdf:about="toto"/></pa:Contact>
 make[1]: Leaving directory `/home/nik/src/libxslt/tests/general'
 make[1]: Entering directory `/home/nik/src/libxslt/tests/namespaces'
 ## Running namespaces tests
+tst5 result
+2c2 < <windows xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; xmlns:xhtml="http://www.w3.org/1999/xhtml";> --- > <windows xmlns:xhtml="http://www.w3.org/1999/xhtml"; xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";>
 make[1]: Leaving directory `/home/nik/src/libxslt/tests/namespaces'
 make[1]: Entering directory `/home/nik/src/libxslt/tests/keys'
 ## Running keys tests
@@ -143,9 +169,13 @@
 make[2]: Leaving directory `/home/nik/src/libxslt/tests/exslt/common'
 make[2]: Entering directory `/home/nik/src/libxslt/tests/exslt/functions'
 ## Running exslt function tests
+function.8 result
+Fatal error, no function.8.res\n
 make[2]: Leaving directory `/home/nik/src/libxslt/tests/exslt/functions'
 make[2]: Entering directory `/home/nik/src/libxslt/tests/exslt/math'
 ## Running exslt math tests
+max.3 result
+Fatal error, no max.3.res\n
 make[2]: Leaving directory `/home/nik/src/libxslt/tests/exslt/math'
 make[2]: Entering directory `/home/nik/src/libxslt/tests/exslt/sets'
 ## Running exslt sets tests


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]