1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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)
|