Exemple #1
0
    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)
Exemple #2
0
        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)
Exemple #3
0
        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)
Exemple #4
0
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)