1
0
mirror of https://gitlab.gnome.org/GNOME/libxslt synced 2025-04-26 19:28:48 +03:00
libxslt/python/tests/extelem.py
Kasimier T. Buchcik 63b4680f80 Fixed regression tests wrt usage of the attributes
* tests/general/bug-36-inc.xsl tests/general/bug-37-inc.xsl
  tests/general/bug-65-inc.xsl tests/general/bug-100.xsl
  tests/REC/test-15-1.xsl tests/REC/test-7.1.1-3.xsl
  tests/namespaces/extra2.xsl tests/extensions/module.xsl
  tests/plugins/plugin.xsl python/tests/extelem.py
  python/tests/extfunc.py: Fixed regression tests wrt
  usage of the attributes "exclude-result-prefixes"
  and "extension-element-prefixes". test-7.1.1-3.xsl fails
  now, since the code still does not exclude ns-decls
  correctly.
2006-03-30 15:31:11 +00:00

90 lines
2.1 KiB
Python

#!/usr/bin/python -u
import sys
import string
import StringIO
import libxml2
# Memory debug specific
libxml2.debugMemory(1)
import libxslt
EXT_URL="http://example.com/foo"
insertNodeName = None
transformNodeName = None
def compile_test(style, inst, func):
pass
def transform_test(ctx, node, inst, comp):
global insertNodeName
#
# Small check to verify the context is correcly accessed
#
try:
#
# FIXME add some more sanity checks
#
tctxt = libxslt.transformCtxt(_obj=ctx)
insertNodeName = tctxt.insertNode().name
# FIXME find and confirm the note being replaced is called 'test'
# transformNodeName = libxml2.xmlNode(inst).name
except:
pass
tctxt.insertNode().addContent('SUCCESS')
styledoc = libxml2.parseDoc("""
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:foo='%s'
extension-element-prefixes='foo'>
<xsl:template match='/'>
<article><foo:test>FAILURE</foo:test></article>
<deeper><article><foo:test>something<foo:test>nested</foo:test>even</foo:test></article></deeper>
</xsl:template>
</xsl:stylesheet>
""" % EXT_URL)
style = libxslt.parseStylesheetDoc(styledoc)
libxslt.registerExtModuleElement("test", EXT_URL, compile_test, transform_test)
doc = libxml2.parseDoc("<doc/>")
result = style.applyStylesheet(doc, None)
style.freeStylesheet()
doc.freeDoc()
extensions = StringIO.StringIO()
libxslt.debugDumpExtensions(extensions)
if 0 and extensions.buf.find(EXT_URL) < 0:
print "Element extension not registered (or dumping broken)"
sys.exit(1)
root = result.children
if root.name != "article":
print "Unexpected root node name"
sys.exit(1)
if root.content != "SUCCESS":
print "Unexpected root node content, extension function failed"
sys.exit(1)
if insertNodeName != 'article':
print "The function callback failed to access its context"
sys.exit(1)
result.dump(sys.stdout)
result.freeDoc()
# Memory debug specific
libxslt.cleanup()
if libxml2.debugMemory(1) == 0:
print "OK"
else:
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
libxml2.dumpMemory()