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