diff options
Diffstat (limited to 'chromium/third_party/libxml/src/check-relaxng-test-suite2.py')
-rwxr-xr-x | chromium/third_party/libxml/src/check-relaxng-test-suite2.py | 242 |
1 files changed, 123 insertions, 119 deletions
diff --git a/chromium/third_party/libxml/src/check-relaxng-test-suite2.py b/chromium/third_party/libxml/src/check-relaxng-test-suite2.py index 8618db7695d..559503a1297 100755 --- a/chromium/third_party/libxml/src/check-relaxng-test-suite2.py +++ b/chromium/third_party/libxml/src/check-relaxng-test-suite2.py @@ -1,9 +1,13 @@ -#!/usr/bin/python +#!/usr/bin/env python import sys import time import os -import string -import StringIO +try: + # Python 2 + from StringIO import StringIO +except ImportError: + # Python 3 + from io import StringIO sys.path.insert(0, "python") import libxml2 @@ -34,8 +38,8 @@ resources = {} def resolver(URL, ID, ctxt): global resources - if resources.has_key(URL): - return(StringIO.StringIO(resources[URL])) + if URL in resources: + return(StringIO(resources[URL])) log.write("Resolver failure: asked %s\n" % (URL)) log.write("resources: %s\n" % (resources)) return None @@ -50,7 +54,7 @@ def resolver(URL, ID, ctxt): # res = libxml2.parseFile(RES) #except: # log.write("Could not parse %s" % (RES)) - + # # handle a valid instance # @@ -60,49 +64,49 @@ def handle_valid(node, schema): global nb_instances_failed instance = node.prop("dtd") - if instance == None: + if instance is None: instance = "" child = node.children while child != None: if child.type != 'text': - instance = instance + child.serialize() - child = child.next + instance = instance + child.serialize() + child = child.next # mem = libxml2.debugMemory(1); try: - doc = libxml2.parseDoc(instance) + doc = libxml2.parseDoc(instance) except: doc = None - if doc == None: + if doc is None: log.write("\nFailed to parse correct instance:\n-----\n") - log.write(instance) + log.write(instance) log.write("\n-----\n") - nb_instances_failed = nb_instances_failed + 1 - return + nb_instances_failed = nb_instances_failed + 1 + return if debug: - print "instance line %d" % (node.lineNo()) - + print("instance line %d" % (node.lineNo())) + try: ctxt = schema.relaxNGNewValidCtxt() - ret = doc.relaxNGValidateDoc(ctxt) - del ctxt + ret = doc.relaxNGValidateDoc(ctxt) + del ctxt except: ret = -1 doc.freeDoc() # if mem != libxml2.debugMemory(1): -# print "validating instance %d line %d leaks" % ( -# nb_instances_tests, node.lineNo()) +# print("validating instance %d line %d leaks" % ( +# nb_instances_tests, node.lineNo())) if ret != 0: log.write("\nFailed to validate correct instance:\n-----\n") - log.write(instance) + log.write(instance) log.write("\n-----\n") - nb_instances_failed = nb_instances_failed + 1 + nb_instances_failed = nb_instances_failed + 1 else: - nb_instances_success = nb_instances_success + 1 + nb_instances_success = nb_instances_success + 1 # # handle an invalid instance @@ -113,34 +117,34 @@ def handle_invalid(node, schema): global nb_instances_failed instance = node.prop("dtd") - if instance == None: + if instance is None: instance = "" child = node.children while child != None: if child.type != 'text': - instance = instance + child.serialize() - child = child.next + instance = instance + child.serialize() + child = child.next # mem = libxml2.debugMemory(1); try: - doc = libxml2.parseDoc(instance) + doc = libxml2.parseDoc(instance) except: doc = None - if doc == None: + if doc is None: log.write("\nStrange: failed to parse incorrect instance:\n-----\n") - log.write(instance) + log.write(instance) log.write("\n-----\n") - return + return if debug: - print "instance line %d" % (node.lineNo()) - + print("instance line %d" % (node.lineNo())) + try: ctxt = schema.relaxNGNewValidCtxt() - ret = doc.relaxNGValidateDoc(ctxt) - del ctxt + ret = doc.relaxNGValidateDoc(ctxt) + del ctxt except: ret = -1 @@ -148,16 +152,16 @@ def handle_invalid(node, schema): doc.freeDoc() # mem2 = libxml2.debugMemory(1) # if mem != mem2: -# print "validating instance %d line %d leaks %d bytes" % ( -# nb_instances_tests, node.lineNo(), mem2 - mem) - +# print("validating instance %d line %d leaks %d bytes" % ( +# nb_instances_tests, node.lineNo(), mem2 - mem)) + if ret == 0: log.write("\nFailed to detect validation problem in instance:\n-----\n") - log.write(instance) + log.write(instance) log.write("\n-----\n") - nb_instances_failed = nb_instances_failed + 1 + nb_instances_failed = nb_instances_failed + 1 else: - nb_instances_success = nb_instances_success + 1 + nb_instances_success = nb_instances_success + 1 # # handle an incorrect test @@ -171,23 +175,23 @@ def handle_correct(node): child = node.children while child != None: if child.type != 'text': - schema = schema + child.serialize() - child = child.next + schema = schema + child.serialize() + child = child.next try: - rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) - rngs = rngp.relaxNGParse() + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() except: rngs = None - if rngs == None: + if rngs is None: log.write("\nFailed to compile correct schema:\n-----\n") - log.write(schema) + log.write(schema) log.write("\n-----\n") - nb_schemas_failed = nb_schemas_failed + 1 + nb_schemas_failed = nb_schemas_failed + 1 else: - nb_schemas_success = nb_schemas_success + 1 + nb_schemas_success = nb_schemas_success + 1 return rngs - + def handle_incorrect(node): global log global nb_schemas_success @@ -197,24 +201,24 @@ def handle_incorrect(node): child = node.children while child != None: if child.type != 'text': - schema = schema + child.serialize() - child = child.next + schema = schema + child.serialize() + child = child.next try: - rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) - rngs = rngp.relaxNGParse() + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() except: rngs = None if rngs != None: log.write("\nFailed to detect schema error in:\n-----\n") - log.write(schema) + log.write(schema) log.write("\n-----\n") - nb_schemas_failed = nb_schemas_failed + 1 + nb_schemas_failed = nb_schemas_failed + 1 else: -# log.write("\nSuccess detecting schema error in:\n-----\n") -# log.write(schema) -# log.write("\n-----\n") - nb_schemas_success = nb_schemas_success + 1 +# log.write("\nSuccess detecting schema error in:\n-----\n") +# log.write(schema) +# log.write("\n-----\n") + nb_schemas_success = nb_schemas_success + 1 return None # @@ -224,14 +228,14 @@ def handle_resource(node, dir): global resources try: - name = node.prop('name') + name = node.prop('name') except: name = None - if name == None or name == '': + if name is None or name == '': log.write("resource has no name") - return; - + return; + if dir != None: # name = libxml2.buildURI(name, dir) name = dir + '/' + name @@ -240,8 +244,8 @@ def handle_resource(node, dir): child = node.children while child != None: if child.type != 'text': - res = res + child.serialize() - child = child.next + res = res + child.serialize() + child = child.next resources[name] = res # @@ -249,14 +253,14 @@ def handle_resource(node, dir): # def handle_dir(node, dir): try: - name = node.prop('name') + name = node.prop('name') except: name = None - if name == None or name == '': + if name is None or name == '': log.write("resource has no name") - return; - + return; + if dir != None: # name = libxml2.buildURI(name, dir) name = dir + '/' + name @@ -282,7 +286,7 @@ def handle_testCase(node): nb_schemas_tests, node.lineNo(), sections)) resources = {} if debug: - print "test %d line %d" % (nb_schemas_tests, node.lineNo()) + print("test %d line %d" % (nb_schemas_tests, node.lineNo())) dirs = node.xpathEval('dir') for dir in dirs: @@ -294,27 +298,27 @@ def handle_testCase(node): tsts = node.xpathEval('incorrect') if tsts != []: if len(tsts) != 1: - print "warning test line %d has more than one <incorrect> example" %(node.lineNo()) - schema = handle_incorrect(tsts[0]) + print("warning test line %d has more than one <incorrect> example" %(node.lineNo())) + schema = handle_incorrect(tsts[0]) else: tsts = node.xpathEval('correct') - if tsts != []: - if len(tsts) != 1: - print "warning test line %d has more than one <correct> example"% (node.lineNo()) - schema = handle_correct(tsts[0]) - else: - print "warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo()) + if tsts != []: + if len(tsts) != 1: + print("warning test line %d has more than one <correct> example"% (node.lineNo())) + schema = handle_correct(tsts[0]) + else: + print("warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo())) nb_schemas_tests = nb_schemas_tests + 1; - + valids = node.xpathEval('valid') invalids = node.xpathEval('invalid') nb_instances_tests = nb_instances_tests + len(valids) + len(invalids) if schema != None: for valid in valids: - handle_valid(valid, schema) + handle_valid(valid, schema) for invalid in invalids: - handle_invalid(invalid, schema) + handle_invalid(invalid, schema) # @@ -324,53 +328,53 @@ def handle_testSuite(node, level = 0): global nb_schemas_tests, nb_schemas_success, nb_schemas_failed global nb_instances_tests, nb_instances_success, nb_instances_failed if level >= 1: - old_schemas_tests = nb_schemas_tests - old_schemas_success = nb_schemas_success - old_schemas_failed = nb_schemas_failed - old_instances_tests = nb_instances_tests - old_instances_success = nb_instances_success - old_instances_failed = nb_instances_failed + old_schemas_tests = nb_schemas_tests + old_schemas_success = nb_schemas_success + old_schemas_failed = nb_schemas_failed + old_instances_tests = nb_instances_tests + old_instances_success = nb_instances_success + old_instances_failed = nb_instances_failed docs = node.xpathEval('documentation') authors = node.xpathEval('author') if docs != []: msg = "" for doc in docs: - msg = msg + doc.content + " " - if authors != []: - msg = msg + "written by " - for author in authors: - msg = msg + author.content + " " - if quiet == 0: - print msg + msg = msg + doc.content + " " + if authors != []: + msg = msg + "written by " + for author in authors: + msg = msg + author.content + " " + if quiet == 0: + print(msg) sections = node.xpathEval('section') if sections != [] and level <= 0: msg = "" for section in sections: - msg = msg + section.content + " " - if quiet == 0: - print "Tests for section %s" % (msg) + msg = msg + section.content + " " + if quiet == 0: + print("Tests for section %s" % (msg)) for test in node.xpathEval('testCase'): handle_testCase(test) for test in node.xpathEval('testSuite'): handle_testSuite(test, level + 1) - + if level >= 1 and sections != []: msg = "" for section in sections: - msg = msg + section.content + " " - print "Result of tests for section %s" % (msg) + msg = msg + section.content + " " + print("Result of tests for section %s" % (msg)) if nb_schemas_tests != old_schemas_tests: - print "found %d test schemas: %d success %d failures" % ( - nb_schemas_tests - old_schemas_tests, - nb_schemas_success - old_schemas_success, - nb_schemas_failed - old_schemas_failed) - if nb_instances_tests != old_instances_tests: - print "found %d test instances: %d success %d failures" % ( - nb_instances_tests - old_instances_tests, - nb_instances_success - old_instances_success, - nb_instances_failed - old_instances_failed) + print("found %d test schemas: %d success %d failures" % ( + nb_schemas_tests - old_schemas_tests, + nb_schemas_success - old_schemas_success, + nb_schemas_failed - old_schemas_failed)) + if nb_instances_tests != old_instances_tests: + print("found %d test instances: %d success %d failures" % ( + nb_instances_tests - old_instances_tests, + nb_instances_success - old_instances_success, + nb_instances_failed - old_instances_failed)) # # Parse the conf file # @@ -389,22 +393,22 @@ libxml2.registerErrorHandler(callback, "") libxml2.setEntityLoader(resolver) root = testsuite.getRootElement() if root.name != 'testSuite': - print "%s doesn't start with a testSuite element, aborting" % (CONF) + print("%s doesn't start with a testSuite element, aborting" % (CONF)) sys.exit(1) if quiet == 0: - print "Running Relax NG testsuite" + print("Running Relax NG testsuite") handle_testSuite(root) if quiet == 0: - print "\nTOTAL:\n" + print("\nTOTAL:\n") if quiet == 0 or nb_schemas_failed != 0: - print "found %d test schemas: %d success %d failures" % ( - nb_schemas_tests, nb_schemas_success, nb_schemas_failed) + print("found %d test schemas: %d success %d failures" % ( + nb_schemas_tests, nb_schemas_success, nb_schemas_failed)) if quiet == 0 or nb_instances_failed != 0: - print "found %d test instances: %d success %d failures" % ( - nb_instances_tests, nb_instances_success, nb_instances_failed) - + print("found %d test instances: %d success %d failures" % ( + nb_instances_tests, nb_instances_success, nb_instances_failed)) +log.close() testsuite.freeDoc() # Memory debug specific @@ -412,7 +416,7 @@ libxml2.relaxNGCleanupTypes() libxml2.cleanupParser() if libxml2.debugMemory(1) == 0: if quiet == 0: - print "OK" + print("OK") else: - print "Memory leak %d bytes" % (libxml2.debugMemory(1)) + print("Memory leak %d bytes" % (libxml2.debugMemory(1))) libxml2.dumpMemory() |