def run_test_dir (path): global total_incorrect_tests, total_correct_tests global incorrect_tests_succeeded, correct_tests_succeeded contents = os.listdir(path) contents.sort() parser = fullparser.RelaxNGParser() if 'i.rng' in contents: total_incorrect_tests += 1 filename = os.path.join(path, 'i.rng') stream = open(filename) try: schema = parser.parse(stream, filename) except RuntimeError: # We reported an error print 'ok' incorrect_tests_succeeded += 1 except: # Unexpected exception typ, value, traceback = sys.exc_info() print 'unexpected exception on parse: %s %s' % (typ, value) else: # Nothing reported print 'no error reported on parse' else: # Assume it's a correct test total_correct_tests += 1 filename = os.path.join(path, 'c.rng') stream = open(filename) try: schema = parser.parse(stream, filename) except RuntimeError: # We reported an error print 'parse error' return except RuntimeError: # Unexpected exception typ, value, traceback = sys.exc_info() print 'unexpected exception on parse: %s' % typ return # Nothing reported print 'parse ok,', correct_tests_succeeded += 1 # Try validating various files valid_ok = 1 for filename in contents: if not filename.endswith('.xml'): continue total_correct_tests += 1 # Read the document to be validated stream = open(os.path.join(path, filename)) document = util.get_rng_document(stream) # Validate it try: result = schema.is_valid(document) except: typ, value, traceback = sys.exc_info() print 'unexpected exception on %s: %s, %s' % (filename, typ, value) valid_ok = 0 else: if filename.find('.v.') == -1: # Input file expected to be invalid if result: print 'not reported as invalid: %s' % filename valid_ok = 0 else: correct_tests_succeeded += 1 else: # Input file expected to be valid if not result: print 'not reported as valid: %s' % filename valid_ok = 0 else: correct_tests_succeeded += 1 if valid_ok: print 'validation ok'