oratools: validator, move print output to script side, add quiet flag
[openraster:openraster-misc.git] / oratools / oratools / validator.py
1 #!/usr/bin/env python
2
3 # This file is a part of Oratools
4 # Copyright 2010 Jon Nordby <jononor@gmail.com>
5 #
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU Lesser General Public License as published by
8 # the Free Software Foundation, either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU Lesser General Public License for more details.
15 #
16 # You should have received a copy of the GNU Lesser General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19 """"""
20
21 from oratools.standard import OpenRasterStandard
22 from oratools import validationchecks
23
24 class OpenRasterValidator(object):
25     """Validate an OpenRasterDocument against a OpenRasterStandard."""
26
27     def __init__(self, document, standard=None):
28         self._document = document
29         self._standard = standard or OpenRasterStandard()
30         self._tests = validationchecks.all_checks
31
32     def run(self):
33         """Run the validator.
34         Returns a tuple with: a boolean indicating passed status and a list
35         of test results."""
36         tests_passed = True
37         test_results = []
38
39         for test in self._tests:
40             description, passed, errormsg = test(self._document, self._standard)
41
42             if not passed:
43                 tests_passed = False
44
45             test_results.append((description, passed, errormsg))
46
47         return (tests_passed, test_results)
48