Blame python/tests/schema.py

Packit 423ecb
#!/usr/bin/python -u
Packit 423ecb
import libxml2
Packit 423ecb
import sys
Packit 423ecb
Packit 423ecb
# Memory debug specific
Packit 423ecb
libxml2.debugMemory(1)
Packit 423ecb
Packit 423ecb
schema="""
Packit 423ecb
<schema xmlns = "http://www.w3.org/2001/XMLSchema">
Packit 423ecb
	<element name = "Customer">
Packit 423ecb
		<complexType>
Packit 423ecb
			<sequence>
Packit 423ecb
				<element name = "FirstName" type = "string" />
Packit 423ecb
				<element name = "MiddleInitial" type = "string" />
Packit 423ecb
				<element name = "LastName" type = "string" />
Packit 423ecb
			</sequence>
Packit 423ecb
			<attribute name = "customerID" type = "integer" />
Packit 423ecb
		</complexType>
Packit 423ecb
	</element>
Packit 423ecb
</schema>"""
Packit 423ecb
Packit 423ecb
instance="""
Packit 423ecb
<Customer customerID = "24332">
Packit 423ecb
	<FirstName>Raymond</FirstName>
Packit 423ecb
	<MiddleInitial>G</MiddleInitial>
Packit 423ecb
	<LastName>Bayliss</LastName>
Packit 423ecb
</Customer>	
Packit 423ecb
"""
Packit 423ecb
Packit 423ecb
ctxt_parser = libxml2.schemaNewMemParserCtxt(schema, len(schema))
Packit 423ecb
ctxt_schema = ctxt_parser.schemaParse()
Packit 423ecb
ctxt_valid  = ctxt_schema.schemaNewValidCtxt()
Packit 423ecb
doc = libxml2.parseDoc(instance)
Packit 423ecb
ret = doc.schemaValidateDoc(ctxt_valid)
Packit 423ecb
if ret != 0:
Packit 423ecb
    print("error doing schema validation")
Packit 423ecb
    sys.exit(1)
Packit 423ecb
Packit 423ecb
doc.freeDoc()
Packit 423ecb
del ctxt_parser
Packit 423ecb
del ctxt_schema
Packit 423ecb
del ctxt_valid
Packit 423ecb
libxml2.schemaCleanupTypes()
Packit 423ecb
Packit 423ecb
# Memory debug specific
Packit 423ecb
libxml2.cleanupParser()
Packit 423ecb
if libxml2.debugMemory(1) == 0:
Packit 423ecb
    print("OK")
Packit 423ecb
else:
Packit 423ecb
    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
Packit 423ecb
    libxml2.dumpMemory()
Packit 423ecb