1#!/usr/bin/env python3 2import sys 3import libxml2 4 5# Memory debug specific 6libxml2.debugMemory(1) 7 8ctxt = libxml2.createFileParserCtxt("valid.xml") 9ctxt.validate(1) 10ctxt.parseDocument() 11doc = ctxt.doc() 12valid = ctxt.isValid() 13 14if doc.name != "valid.xml": 15 print("doc.name failed") 16 sys.exit(1) 17root = doc.children 18if root.name != "doc": 19 print("root.name failed") 20 sys.exit(1) 21if valid != 1: 22 print("validity chec failed") 23 sys.exit(1) 24doc.freeDoc() 25 26i = 1000 27while i > 0: 28 ctxt = libxml2.createFileParserCtxt("valid.xml") 29 ctxt.validate(1) 30 ctxt.parseDocument() 31 doc = ctxt.doc() 32 valid = ctxt.isValid() 33 doc.freeDoc() 34 if valid != 1: 35 print("validity check failed") 36 sys.exit(1) 37 i = i - 1 38 39#deactivate error messages from the validation 40def noerr(ctx, str): 41 pass 42 43libxml2.registerErrorHandler(noerr, None) 44 45ctxt = libxml2.createFileParserCtxt("invalid.xml") 46ctxt.validate(1) 47ctxt.parseDocument() 48doc = ctxt.doc() 49valid = ctxt.isValid() 50if doc.name != "invalid.xml": 51 print("doc.name failed") 52 sys.exit(1) 53root = doc.children 54if root.name != "doc": 55 print("root.name failed") 56 sys.exit(1) 57if valid != 0: 58 print("validity chec failed") 59 sys.exit(1) 60doc.freeDoc() 61 62i = 1000 63while i > 0: 64 ctxt = libxml2.createFileParserCtxt("invalid.xml") 65 ctxt.validate(1) 66 ctxt.parseDocument() 67 doc = ctxt.doc() 68 valid = ctxt.isValid() 69 doc.freeDoc() 70 if valid != 0: 71 print("validity check failed") 72 sys.exit(1) 73 i = i - 1 74del ctxt 75 76# Memory debug specific 77libxml2.cleanupParser() 78if libxml2.debugMemory(1) == 0: 79 print("OK") 80else: 81 print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 82 libxml2.dumpMemory() 83