summaryrefslogtreecommitdiffstats
path: root/libxml2/check-xml-test-suite.py
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-10-19 18:26:52 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-10-19 18:26:52 (GMT)
commit818fd731f62993dc8aa5d07b82e1d1b2c04aae7d (patch)
tree41a61b0a1b18ed5ffeeb028e986b3586f9063628 /libxml2/check-xml-test-suite.py
parentd72feaf69933b069cff3c0cb20a5f5f03ecba77b (diff)
downloadblt-818fd731f62993dc8aa5d07b82e1d1b2c04aae7d.zip
blt-818fd731f62993dc8aa5d07b82e1d1b2c04aae7d.tar.gz
blt-818fd731f62993dc8aa5d07b82e1d1b2c04aae7d.tar.bz2
update libxml2
Diffstat (limited to 'libxml2/check-xml-test-suite.py')
-rwxr-xr-xlibxml2/check-xml-test-suite.py409
1 files changed, 0 insertions, 409 deletions
diff --git a/libxml2/check-xml-test-suite.py b/libxml2/check-xml-test-suite.py
deleted file mode 100755
index 2de07b1..0000000
--- a/libxml2/check-xml-test-suite.py
+++ /dev/null
@@ -1,409 +0,0 @@
-#!/usr/bin/python
-import sys
-import time
-import os
-import string
-sys.path.insert(0, "python")
-import libxml2
-
-test_nr = 0
-test_succeed = 0
-test_failed = 0
-test_error = 0
-
-#
-# the testsuite description
-#
-CONF="xml-test-suite/xmlconf/xmlconf.xml"
-LOG="check-xml-test-suite.log"
-
-log = open(LOG, "w")
-
-#
-# Error and warning handlers
-#
-error_nr = 0
-error_msg = ''
-def errorHandler(ctx, str):
- global error_nr
- global error_msg
-
- error_nr = error_nr + 1
- if len(error_msg) < 300:
- if len(error_msg) == 0 or error_msg[-1] == '\n':
- error_msg = error_msg + " >>" + str
- else:
- error_msg = error_msg + str
-
-libxml2.registerErrorHandler(errorHandler, None)
-
-#warning_nr = 0
-#warning = ''
-#def warningHandler(ctx, str):
-# global warning_nr
-# global warning
-#
-# warning_nr = warning_nr + 1
-# warning = warning + str
-#
-#libxml2.registerWarningHandler(warningHandler, None)
-
-#
-# Used to load the XML testsuite description
-#
-def loadNoentDoc(filename):
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return None
- ctxt.replaceEntities(1)
- ctxt.parseDocument()
- try:
- doc = ctxt.doc()
- except:
- doc = None
- if ctxt.wellFormed() != 1:
- doc.freeDoc()
- return None
- return doc
-
-#
-# The conformance testing routines
-#
-
-def testNotWf(filename, id):
- global error_nr
- global error_msg
- global log
-
- error_nr = 0
- error_msg = ''
-
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return -1
- ret = ctxt.parseDocument()
-
- try:
- doc = ctxt.doc()
- except:
- doc = None
- if doc != None:
- doc.freeDoc()
- if ret == 0 or ctxt.wellFormed() != 0:
- print "%s: error: Well Formedness error not detected" % (id)
- log.write("%s: error: Well Formedness error not detected\n" % (id))
- return 0
- return 1
-
-def testNotWfEnt(filename, id):
- global error_nr
- global error_msg
- global log
-
- error_nr = 0
- error_msg = ''
-
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return -1
- ctxt.replaceEntities(1)
- ret = ctxt.parseDocument()
-
- try:
- doc = ctxt.doc()
- except:
- doc = None
- if doc != None:
- doc.freeDoc()
- if ret == 0 or ctxt.wellFormed() != 0:
- print "%s: error: Well Formedness error not detected" % (id)
- log.write("%s: error: Well Formedness error not detected\n" % (id))
- return 0
- return 1
-
-def testNotWfEntDtd(filename, id):
- global error_nr
- global error_msg
- global log
-
- error_nr = 0
- error_msg = ''
-
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return -1
- ctxt.replaceEntities(1)
- ctxt.loadSubset(1)
- ret = ctxt.parseDocument()
-
- try:
- doc = ctxt.doc()
- except:
- doc = None
- if doc != None:
- doc.freeDoc()
- if ret == 0 or ctxt.wellFormed() != 0:
- print "%s: error: Well Formedness error not detected" % (id)
- log.write("%s: error: Well Formedness error not detected\n" % (id))
- return 0
- return 1
-
-def testWfEntDtd(filename, id):
- global error_nr
- global error_msg
- global log
-
- error_nr = 0
- error_msg = ''
-
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return -1
- ctxt.replaceEntities(1)
- ctxt.loadSubset(1)
- ret = ctxt.parseDocument()
-
- try:
- doc = ctxt.doc()
- except:
- doc = None
- if doc == None or ret != 0 or ctxt.wellFormed() == 0:
- print "%s: error: wrongly failed to parse the document" % (id)
- log.write("%s: error: wrongly failed to parse the document\n" % (id))
- if doc != None:
- doc.freeDoc()
- return 0
- if error_nr != 0:
- print "%s: warning: WF document generated an error msg" % (id)
- log.write("%s: error: WF document generated an error msg\n" % (id))
- doc.freeDoc()
- return 2
- doc.freeDoc()
- return 1
-
-def testError(filename, id):
- global error_nr
- global error_msg
- global log
-
- error_nr = 0
- error_msg = ''
-
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return -1
- ctxt.replaceEntities(1)
- ctxt.loadSubset(1)
- ret = ctxt.parseDocument()
-
- try:
- doc = ctxt.doc()
- except:
- doc = None
- if doc != None:
- doc.freeDoc()
- if ctxt.wellFormed() == 0:
- print "%s: warning: failed to parse the document but accepted" % (id)
- log.write("%s: warning: failed to parse the document but accepte\n" % (id))
- return 2
- if error_nr != 0:
- print "%s: warning: WF document generated an error msg" % (id)
- log.write("%s: error: WF document generated an error msg\n" % (id))
- return 2
- return 1
-
-def testInvalid(filename, id):
- global error_nr
- global error_msg
- global log
-
- error_nr = 0
- error_msg = ''
-
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return -1
- ctxt.validate(1)
- ret = ctxt.parseDocument()
-
- try:
- doc = ctxt.doc()
- except:
- doc = None
- valid = ctxt.isValid()
- if doc == None:
- print "%s: error: wrongly failed to parse the document" % (id)
- log.write("%s: error: wrongly failed to parse the document\n" % (id))
- return 0
- if valid == 1:
- print "%s: error: Validity error not detected" % (id)
- log.write("%s: error: Validity error not detected\n" % (id))
- doc.freeDoc()
- return 0
- if error_nr == 0:
- print "%s: warning: Validity error not reported" % (id)
- log.write("%s: warning: Validity error not reported\n" % (id))
- doc.freeDoc()
- return 2
-
- doc.freeDoc()
- return 1
-
-def testValid(filename, id):
- global error_nr
- global error_msg
-
- error_nr = 0
- error_msg = ''
-
- ctxt = libxml2.createFileParserCtxt(filename)
- if ctxt == None:
- return -1
- ctxt.validate(1)
- ctxt.parseDocument()
-
- try:
- doc = ctxt.doc()
- except:
- doc = None
- valid = ctxt.isValid()
- if doc == None:
- print "%s: error: wrongly failed to parse the document" % (id)
- log.write("%s: error: wrongly failed to parse the document\n" % (id))
- return 0
- if valid != 1:
- print "%s: error: Validity check failed" % (id)
- log.write("%s: error: Validity check failed\n" % (id))
- doc.freeDoc()
- return 0
- if error_nr != 0 or valid != 1:
- print "%s: warning: valid document reported an error" % (id)
- log.write("%s: warning: valid document reported an error\n" % (id))
- doc.freeDoc()
- return 2
- doc.freeDoc()
- return 1
-
-def runTest(test):
- global test_nr
- global test_succeed
- global test_failed
- global error_msg
- global log
-
- uri = test.prop('URI')
- id = test.prop('ID')
- if uri == None:
- print "Test without ID:", uri
- return -1
- if id == None:
- print "Test without URI:", id
- return -1
- base = test.getBase(None)
- URI = libxml2.buildURI(uri, base)
- if os.access(URI, os.R_OK) == 0:
- print "Test %s missing: base %s uri %s" % (URI, base, uri)
- return -1
- type = test.prop('TYPE')
- if type == None:
- print "Test %s missing TYPE" % (id)
- return -1
-
- extra = None
- if type == "invalid":
- res = testInvalid(URI, id)
- elif type == "valid":
- res = testValid(URI, id)
- elif type == "not-wf":
- extra = test.prop('ENTITIES')
- # print URI
- #if extra == None:
- # res = testNotWfEntDtd(URI, id)
- #elif extra == 'none':
- # res = testNotWf(URI, id)
- #elif extra == 'general':
- # res = testNotWfEnt(URI, id)
- #elif extra == 'both' or extra == 'parameter':
- res = testNotWfEntDtd(URI, id)
- #else:
- # print "Unknow value %s for an ENTITIES test value" % (extra)
- # return -1
- elif type == "error":
- res = testError(URI, id)
- else:
- # TODO skipped for now
- return -1
-
- test_nr = test_nr + 1
- if res > 0:
- test_succeed = test_succeed + 1
- elif res == 0:
- test_failed = test_failed + 1
- elif res < 0:
- test_error = test_error + 1
-
- # Log the ontext
- if res != 1:
- log.write(" File: %s\n" % (URI))
- content = string.strip(test.content)
- while content[-1] == '\n':
- content = content[0:-1]
- if extra != None:
- log.write(" %s:%s:%s\n" % (type, extra, content))
- else:
- log.write(" %s:%s\n\n" % (type, content))
- if error_msg != '':
- log.write(" ----\n%s ----\n" % (error_msg))
- error_msg = ''
- log.write("\n")
-
- return 0
-
-
-def runTestCases(case):
- profile = case.prop('PROFILE')
- if profile != None and \
- string.find(profile, "IBM XML Conformance Test Suite - Production") < 0:
- print "=>", profile
- test = case.children
- while test != None:
- if test.name == 'TEST':
- runTest(test)
- if test.name == 'TESTCASES':
- runTestCases(test)
- test = test.next
-
-conf = loadNoentDoc(CONF)
-if conf == None:
- print "Unable to load %s" % CONF
- sys.exit(1)
-
-testsuite = conf.getRootElement()
-if testsuite.name != 'TESTSUITE':
- print "Expecting TESTSUITE root element: aborting"
- sys.exit(1)
-
-profile = testsuite.prop('PROFILE')
-if profile != None:
- print profile
-
-start = time.time()
-
-case = testsuite.children
-while case != None:
- if case.name == 'TESTCASES':
- old_test_nr = test_nr
- old_test_succeed = test_succeed
- old_test_failed = test_failed
- old_test_error = test_error
- runTestCases(case)
- print " Ran %d tests: %d suceeded, %d failed and %d generated an error" % (
- test_nr - old_test_nr, test_succeed - old_test_succeed,
- test_failed - old_test_failed, test_error - old_test_error)
- case = case.next
-
-conf.freeDoc()
-log.close()
-
-print "Ran %d tests: %d suceeded, %d failed and %d generated an error in %.2f s." % (
- test_nr, test_succeed, test_failed, test_error, time.time() - start)