def test_document_iter_errors_api(self): self.assertListEqual(list(xmlschema.iter_errors(self.vh_xml_file)), []) self.assertListEqual( list(xmlschema.iter_errors(self.vh_xml_file, use_defaults=False)), []) vh_2_file = self.casepath('examples/vehicles/vehicles-2_errors.xml') errors = list(xmlschema.iter_errors(vh_2_file)) self.assertEqual(len(errors), 2) self.assertIsInstance(errors[0], XMLSchemaValidationError) self.assertIsInstance(errors[1], XMLSchemaValidationError)
def check_iter_errors(self): errors1 = list(self.schema.iter_errors(xml_file)) for e in errors1: self.assertIsInstance(e.reason, str) self.assertEqual(len(errors1), expected_errors, msg_tmpl % "wrong number of errors (%d expected)" % expected_errors) errors2 = list(xmlschema.iter_errors(xml_file, schema=self.schema)) self.assertEqual(len(errors1), len(errors2)) for e1, e2 in zip(errors1, errors2): self.assertEqual(e1.reason, e2.reason) lazy_errors = list(xmlschema.iter_errors(xml_file, schema=self.schema, lazy=True)) self.assertEqual(len(errors1), len(lazy_errors)) for e1, e2 in zip(errors1, lazy_errors): self.assertEqual(e1.reason, e2.reason)
def check_iter_errors(self): errors = list(self.schema.iter_errors(xml_file)) for e in errors: self.assertIsInstance(e.reason, str, msg=xml_file) self.assertEqual(len(errors), expected_errors, msg=xml_file) module_api_errors = list( xmlschema.iter_errors(xml_file, schema=self.schema)) self.assertEqual(len(errors), len(module_api_errors), msg=xml_file) for e, api_error in zip(errors, module_api_errors): self.assertEqual(e.reason, api_error.reason, msg=xml_file) lazy_errors = list( xmlschema.iter_errors(xml_file, schema=self.schema, lazy=True)) self.assertEqual(len(errors), len(lazy_errors), msg=xml_file) for e, lazy_error in zip(errors, lazy_errors): self.assertEqual(e.reason, lazy_error.reason, msg=xml_file)
def validate(): parser = argparse.ArgumentParser( prog=PROGRAM_NAME, add_help=True, description="validate a set of XML files.") parser.usage = "%(prog)s [OPTION]... [FILE]...\n" \ "Try '%(prog)s --help' for more information." parser.add_argument('-v', dest='verbosity', action='count', default=0, help="increase output verbosity.") parser.add_argument('--schema', type=str, metavar='PATH', help="path or URL to an XSD schema.") parser.add_argument('--version', type=xsd_version_number, default='1.0', help="XSD schema validator to use (default is 1.0).") parser.add_argument('-L', dest='locations', nargs=2, type=str, action='append', metavar="URI/URL", help="schema location hint overrides.") parser.add_argument( '--lazy', action='store_true', default=False, help="use lazy validation mode (slower but use less memory).") parser.add_argument('files', metavar='[XML_FILE ...]', nargs='+', help="XML files to be validated.") args = parser.parse_args() tot_errors = 0 for filepath in args.files: try: errors = list( iter_errors(filepath, schema=args.schema, lazy=args.lazy)) except (xmlschema.XMLSchemaException, URLError) as err: tot_errors += 1 print(str(err)) continue else: if not errors: print("{} is valid".format(filepath)) else: tot_errors += len(errors) print("{} is not valid".format(filepath)) sys.exit(tot_errors)