#!/usr/bin/python -u # # this tests the basic APIs of the XmlTextReader interface # import libxml2 import sys try: import StringIO str_io = StringIO.StringIO except: import io str_io = io.StringIO # Memory debug specific libxml2.debugMemory(1) expect="""--> (3) test1:1:xmlns: URI foo is not absolute --> (4) test1:1:Opening and ending tag mismatch: c line 1 and a """ err="" def myErrorHandler(arg,msg,severity,locator): global err err = err + "%s (%d) %s:%d:%s" % (arg,severity,locator.BaseURI(),locator.LineNumber(),msg) f = str_io("""<a xmlns="foo"><b b1="b1"/><c>content of c</a>""") input = libxml2.inputBuffer(f) reader = input.newTextReader("test1") reader.SetErrorHandler(myErrorHandler,"-->") while reader.Read() == 1: pass if err != expect: print("error") print("received %s" %(err)) print("expected %s" %(expect)) sys.exit(1) reader.SetErrorHandler(None,None) if reader.GetErrorHandler() != (None,None): print("GetErrorHandler failed") sys.exit(1) # # cleanup for memory allocation counting # del f del input del reader # Memory debug specific libxml2.cleanupParser() if libxml2.debugMemory(1) == 0: print("OK") else: print("Memory leak %d bytes" % (libxml2.debugMemory(1))) libxml2.dumpMemory()