Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Unified Diff: third_party/libxslt/python/tests/extfunc.py

Issue 1193533007: Upgrade to libxml 2.9.2 and libxslt 1.1.28 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove suppressions, have landed in blink now Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/libxslt/python/tests/extfunc.py
diff --git a/third_party/libxslt/python/tests/extfunc.py b/third_party/libxslt/python/tests/extfunc.py
new file mode 100755
index 0000000000000000000000000000000000000000..0a559531724107ba9a5cbab784db53e57282aa11
--- /dev/null
+++ b/third_party/libxslt/python/tests/extfunc.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python -u
+import sys
+import string
+import libxml2
+# Memory debug specific
+libxml2.debugMemory(1)
+import libxslt
+
+nodeName = None
+
+def f(ctx, str):
+ global nodeName
+
+ #
+ # Small check to verify the context is correcly accessed
+ #
+ try:
+ pctxt = libxslt.xpathParserContext(_obj=ctx)
+ ctxt = pctxt.context()
+ tctxt = ctxt.transformContext()
+ nodeName = tctxt.insertNode().name
+ except:
+ pass
+
+ return string.upper(str)
+
+libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)
+
+styledoc = libxml2.parseDoc("""
+<xsl:stylesheet version='1.0'
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns:foo='http://example.com/foo'
+ exclude-result-prefixes='foo'>
+
+ <xsl:param name='bar'>failure</xsl:param>
+ <xsl:template match='/'>
+ <article><xsl:value-of select='foo:foo($bar)'/></article>
+ </xsl:template>
+</xsl:stylesheet>
+""")
+style = libxslt.parseStylesheetDoc(styledoc)
+doc = libxml2.parseDoc("<doc/>")
+result = style.applyStylesheet(doc, { "bar": "'success'" })
+style.freeStylesheet()
+doc.freeDoc()
+
+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 nodeName != 'article':
+ print "The function callback failed to access its context"
+ sys.exit(1)
+
+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()

Powered by Google App Engine
This is Rietveld 408576698