1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*7c568831SAndroid Build Coastguard Workerimport setup_test 3*7c568831SAndroid Build Coastguard Workerimport libxml2 4*7c568831SAndroid Build Coastguard Workerimport sys 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 Workerschema="""<?xml version="1.0" encoding="iso-8859-1"?> 10*7c568831SAndroid Build Coastguard Worker<schema xmlns = "http://www.w3.org/2001/XMLSchema"> 11*7c568831SAndroid Build Coastguard Worker <element name = "Customer"> 12*7c568831SAndroid Build Coastguard Worker <complexType> 13*7c568831SAndroid Build Coastguard Worker <sequence> 14*7c568831SAndroid Build Coastguard Worker <element name = "FirstName" type = "string" /> 15*7c568831SAndroid Build Coastguard Worker <element name = "MiddleInitial" type = "string" /> 16*7c568831SAndroid Build Coastguard Worker <element name = "LastName" type = "string" /> 17*7c568831SAndroid Build Coastguard Worker </sequence> 18*7c568831SAndroid Build Coastguard Worker <attribute name = "customerID" type = "integer" /> 19*7c568831SAndroid Build Coastguard Worker </complexType> 20*7c568831SAndroid Build Coastguard Worker </element> 21*7c568831SAndroid Build Coastguard Worker</schema>""" 22*7c568831SAndroid Build Coastguard Worker 23*7c568831SAndroid Build Coastguard Workerinstance="""<?xml version="1.0" encoding="iso-8859-1"?> 24*7c568831SAndroid Build Coastguard Worker<Customer customerID = "24332"> 25*7c568831SAndroid Build Coastguard Worker <FirstName>Raymond</FirstName> 26*7c568831SAndroid Build Coastguard Worker <MiddleInitial>G</MiddleInitial> 27*7c568831SAndroid Build Coastguard Worker <LastName>Bayliss</LastName> 28*7c568831SAndroid Build Coastguard Worker</Customer> 29*7c568831SAndroid Build Coastguard Worker""" 30*7c568831SAndroid Build Coastguard Worker 31*7c568831SAndroid Build Coastguard Workerctxt_parser = libxml2.schemaNewMemParserCtxt(schema, len(schema)) 32*7c568831SAndroid Build Coastguard Workerctxt_schema = ctxt_parser.schemaParse() 33*7c568831SAndroid Build Coastguard Workerctxt_valid = ctxt_schema.schemaNewValidCtxt() 34*7c568831SAndroid Build Coastguard Workerdoc = libxml2.parseDoc(instance) 35*7c568831SAndroid Build Coastguard Workerret = doc.schemaValidateDoc(ctxt_valid) 36*7c568831SAndroid Build Coastguard Workerif ret != 0: 37*7c568831SAndroid Build Coastguard Worker print("error doing schema validation") 38*7c568831SAndroid Build Coastguard Worker sys.exit(1) 39*7c568831SAndroid Build Coastguard Worker 40*7c568831SAndroid Build Coastguard Workerdoc.freeDoc() 41*7c568831SAndroid Build Coastguard Workerdel ctxt_parser 42*7c568831SAndroid Build Coastguard Workerdel ctxt_schema 43*7c568831SAndroid Build Coastguard Workerdel ctxt_valid 44*7c568831SAndroid Build Coastguard Workerlibxml2.schemaCleanupTypes() 45*7c568831SAndroid Build Coastguard Worker 46*7c568831SAndroid Build Coastguard Worker# Memory debug specific 47*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser() 48*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0: 49*7c568831SAndroid Build Coastguard Worker print("OK") 50*7c568831SAndroid Build Coastguard Workerelse: 51*7c568831SAndroid Build Coastguard Worker print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 52*7c568831SAndroid Build Coastguard Worker 53