diff options
Diffstat (limited to 'testsuite/Testschema')
-rw-r--r-- | testsuite/Testschema/test_schema.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/testsuite/Testschema/test_schema.py b/testsuite/Testschema/test_schema.py new file mode 100644 index 000000000..56fe76205 --- /dev/null +++ b/testsuite/Testschema/test_schema.py @@ -0,0 +1,40 @@ +import os +import re +import sys +import glob +from subprocess import Popen, PIPE, STDOUT + +# add all parent testsuite directories to sys.path to allow (most) +# relative imports in python 2.4 +_path = os.path.dirname(__file__) +while _path != '/': + if os.path.basename(_path).lower().startswith("test"): + sys.path.append(_path) + if os.path.basename(_path) == "testsuite": + break + _path = os.path.dirname(_path) +from common import * + +# path to Bcfg2 schema directory +srcpath = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", + "schemas")) + +# test for xmllint existence +try: + Popen(['xmllint'], stdout=PIPE, stderr=STDOUT).wait() + HAS_XMLLINT = True +except OSError: + HAS_XMLLINT = False + + +class TestSchemas(Bcfg2TestCase): + schema_url = "http://www.w3.org/2001/XMLSchema.xsd" + + @skipUnless(HAS_XMLLINT, "xmllint not installed") + def test_valid(self): + schemas = [s for s in glob.glob(os.path.join(srcpath,'*.xsd'))] + xmllint = Popen(['xmllint', '--xinclude', '--noout', '--schema', + self.schema_url] + schemas, + stdout=PIPE, stderr=STDOUT) + print(xmllint.communicate()[0]) + self.assertEqual(xmllint.wait(), 0) |