Annotation of embedaddon/libxml2/python/tests/validRNG.py, revision 1.1.1.2

1.1       misho       1: #!/usr/bin/python -u
                      2: import libxml2
                      3: import sys
                      4: 
                      5: ARG = 'test string'
                      6: 
                      7: class ErrorHandler:
                      8: 
                      9:     def __init__(self):
                     10:         self.errors = []
                     11: 
                     12:     def handler(self, msg, data):
                     13:         if data != ARG:
1.1.1.2 ! misho      14:             raise Exception("Error handler did not receive correct argument")
1.1       misho      15:         self.errors.append(msg)
                     16: 
                     17: # Memory debug specific
                     18: libxml2.debugMemory(1)
                     19: 
                     20: schema="""<?xml version="1.0"?>
                     21: <element name="foo"
                     22:          xmlns="http://relaxng.org/ns/structure/1.0"
                     23:          xmlns:a="http://relaxng.org/ns/annotation/1.0"
                     24:          xmlns:ex1="http://www.example.com/n1"
                     25:          xmlns:ex2="http://www.example.com/n2">
                     26:   <a:documentation>A foo element.</a:documentation>
                     27:   <element name="ex1:bar1">
                     28:     <empty/>
                     29:   </element>
                     30:   <element name="ex2:bar2">
                     31:     <empty/>
                     32:   </element>
                     33: </element>
                     34: """
                     35: 
                     36: valid="""<?xml version="1.0"?>
                     37: <foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
                     38: 
                     39: invalid="""<?xml version="1.0"?>
                     40: <foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1">bad</pre1:bar1><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
                     41: 
                     42: rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
                     43: rngs = rngp.relaxNGParse()
                     44: ctxt = rngs.relaxNGNewValidCtxt()
                     45: e = ErrorHandler()
                     46: ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
                     47: 
                     48: # Test valid document
                     49: doc = libxml2.parseDoc(valid)
                     50: ret = doc.relaxNGValidateDoc(ctxt)
                     51: if ret != 0 or e.errors:
1.1.1.2 ! misho      52:     print("error doing RelaxNG validation")
1.1       misho      53:     sys.exit(1)
                     54: doc.freeDoc()
                     55: 
                     56: # Test invalid document
                     57: doc = libxml2.parseDoc(invalid)
                     58: ret = doc.relaxNGValidateDoc(ctxt)
                     59: if ret == 0 or not e.errors:
1.1.1.2 ! misho      60:     print("Error: document supposed to be RelaxNG invalid")
1.1       misho      61:     sys.exit(1)
                     62: doc.freeDoc()
                     63: 
                     64: del rngp
                     65: del rngs
                     66: del ctxt
                     67: libxml2.relaxNGCleanupTypes()
                     68: 
                     69: # Memory debug specific
                     70: libxml2.cleanupParser()
                     71: if libxml2.debugMemory(1) == 0:
1.1.1.2 ! misho      72:     print("OK")
1.1       misho      73: else:
1.1.1.2 ! misho      74:     print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
1.1       misho      75:     libxml2.dumpMemory()
                     76: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>