Blame python/tests/relaxng.py

Packit Service a31ea6
#!/usr/bin/python -u
Packit Service a31ea6
import libxml2
Packit Service a31ea6
import sys
Packit Service a31ea6
Packit Service a31ea6
# Memory debug specific
Packit Service a31ea6
libxml2.debugMemory(1)
Packit Service a31ea6
Packit Service a31ea6
schema="""
Packit Service a31ea6
Packit Service a31ea6
         xmlns="http://relaxng.org/ns/structure/1.0"
Packit Service a31ea6
         xmlns:a="http://relaxng.org/ns/annotation/1.0"
Packit Service a31ea6
         xmlns:ex1="http://www.example.com/n1"
Packit Service a31ea6
         xmlns:ex2="http://www.example.com/n2">
Packit Service a31ea6
  <a:documentation>A foo element.</a:documentation>
Packit Service a31ea6
  <element name="ex1:bar1">
Packit Service a31ea6
    <empty/>
Packit Service a31ea6
  </element>
Packit Service a31ea6
  <element name="ex2:bar2">
Packit Service a31ea6
    <empty/>
Packit Service a31ea6
  </element>
Packit Service a31ea6
</element>
Packit Service a31ea6
"""
Packit Service a31ea6
instance="""
Packit Service a31ea6
<foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
Packit Service a31ea6
Packit Service a31ea6
rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
Packit Service a31ea6
rngs = rngp.relaxNGParse()
Packit Service a31ea6
ctxt = rngs.relaxNGNewValidCtxt()
Packit Service a31ea6
doc = libxml2.parseDoc(instance)
Packit Service a31ea6
ret = doc.relaxNGValidateDoc(ctxt)
Packit Service a31ea6
if ret != 0:
Packit Service a31ea6
    print("error doing RelaxNG validation")
Packit Service a31ea6
    sys.exit(1)
Packit Service a31ea6
Packit Service a31ea6
doc.freeDoc()
Packit Service a31ea6
del rngp
Packit Service a31ea6
del rngs
Packit Service a31ea6
del ctxt
Packit Service a31ea6
libxml2.relaxNGCleanupTypes()
Packit Service a31ea6
Packit Service a31ea6
# Memory debug specific
Packit Service a31ea6
libxml2.cleanupParser()
Packit Service a31ea6
if libxml2.debugMemory(1) == 0:
Packit Service a31ea6
    print("OK")
Packit Service a31ea6
else:
Packit Service a31ea6
    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
Packit Service a31ea6
    libxml2.dumpMemory()
Packit Service a31ea6