38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#!/usr/bin/python -u
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncimport sys
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncimport libxml2
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync# Memory debug specific
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.debugMemory(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncctxt = libxml2.createFileParserCtxt("valid.xml")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncctxt.validate(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncctxt.parseDocument()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdoc = ctxt.doc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncvalid = ctxt.isValid()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif doc.name != "valid.xml":
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "doc.name failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncroot = doc.children
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif root.name != "doc":
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "root.name failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif valid != 1:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "validity chec failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdoc.freeDoc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynci = 1000
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncwhile i > 0:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt = libxml2.createFileParserCtxt("valid.xml")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt.validate(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt.parseDocument()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync doc = ctxt.doc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync valid = ctxt.isValid()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync doc.freeDoc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if valid != 1:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "validity check failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync i = i - 1
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#desactivate error messages from the validation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdef noerr(ctx, str):
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync pass
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.registerErrorHandler(noerr, None)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncctxt = libxml2.createFileParserCtxt("invalid.xml")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncctxt.validate(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncctxt.parseDocument()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdoc = ctxt.doc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncvalid = ctxt.isValid()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif doc.name != "invalid.xml":
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "doc.name failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncroot = doc.children
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif root.name != "doc":
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "root.name failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif valid != 0:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "validity chec failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdoc.freeDoc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynci = 1000
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncwhile i > 0:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt = libxml2.createFileParserCtxt("invalid.xml")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt.validate(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt.parseDocument()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync doc = ctxt.doc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync valid = ctxt.isValid()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync doc.freeDoc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if valid != 0:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "validity check failed"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync i = i - 1
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdel ctxt
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync# Memory debug specific
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.cleanupParser()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif libxml2.debugMemory(1) == 0:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "OK"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncelse:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Memory leak %d bytes" % (libxml2.debugMemory(1))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync libxml2.dumpMemory()