aboutsummaryrefslogtreecommitdiffstats
path: root/python/tests
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>2003-01-03 01:18:43 +0000
committerDaniel Veillard <veillard@src.gnome.org>2003-01-03 01:18:43 +0000
commit1fdfd115e522b45ead8ee1576c8a863483f767e1 (patch)
tree131e284135d60e6df3140a21f392e38a5f76f2fc /python/tests
parentdab8ea9b83b22ecd48d97dd13fe5035cf392d3fd (diff)
downloadandroid_external_libxml2-1fdfd115e522b45ead8ee1576c8a863483f767e1.tar.gz
android_external_libxml2-1fdfd115e522b45ead8ee1576c8a863483f767e1.tar.bz2
android_external_libxml2-1fdfd115e522b45ead8ee1576c8a863483f767e1.zip
Fixing some more mess with validation and recursive entities while using
* xmlreader.c python/tests/reader2py: Fixing some more mess with validation and recursive entities while using the reader interface, it's getting a bit messy... Daniel
Diffstat (limited to 'python/tests')
-rwxr-xr-xpython/tests/reader2.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/python/tests/reader2.py b/python/tests/reader2.py
index 2be89e27..2488820e 100755
--- a/python/tests/reader2.py
+++ b/python/tests/reader2.py
@@ -145,6 +145,59 @@ if err != "":
sys.exit(1)
#
+# Another test for recursive entity parsing, validation, and replacement of
+# entities, making sure the entity ref node doesn't show up in that case
+#
+
+s = """<!DOCTYPE test [
+<!ELEMENT test (x, x)>
+<!ELEMENT x (y)>
+<!ELEMENT y (#PCDATA)>
+<!ENTITY x "<x>&y;</x>">
+<!ENTITY y "<y>yyy</y>">
+]>
+<test>
+ &x;
+ &x;
+</test>"""
+expect="""1 test 0
+3 #text 1
+1 x 1
+1 y 2
+3 #text 3
+15 y 2
+15 x 1
+3 #text 1
+1 x 1
+1 y 2
+3 #text 3
+15 y 2
+15 x 1
+3 #text 1
+15 test 0
+"""
+res=""
+err=""
+
+input = libxml2.inputBuffer(StringIO.StringIO(s))
+reader = input.newTextReader("test4")
+reader.SetParserProp(libxml2.PARSER_LOADDTD,1)
+reader.SetParserProp(libxml2.PARSER_DEFAULTATTRS,1)
+reader.SetParserProp(libxml2.PARSER_SUBST_ENTITIES,1)
+reader.SetParserProp(libxml2.PARSER_VALIDATE,1)
+while reader.Read() == 1:
+ res = res + "%s %s %d\n" % (reader.NodeType(),reader.Name(),reader.Depth())
+
+if res != expect:
+ print "test4 failed: unexpected output"
+ print res
+ sys.exit(1)
+if err != "":
+ print "test4 failed: validation error found"
+ print err
+ sys.exit(1)
+
+#
# cleanup
#
del input