1
0
mirror of https://github.com/samba-team/samba.git synced 2025-07-30 19:42:05 +03:00

samba.tests.docs: Skip tests if xsltproc is not present.

This commit is contained in:
Jelmer Vernooij
2012-09-28 09:52:41 -07:00
parent 2a31f0b509
commit 8412b57f5c

View File

@ -21,7 +21,9 @@
import samba
import samba.tests
from samba.tests import TestSkipped
import errno
import os
import re
import subprocess
@ -35,10 +37,21 @@ class TestCase(samba.tests.TestCase):
return message + '\n\n %s' % ('\n '.join(parameters))
class NoXsltProc(Exception):
def __init__(self):
Exception.__init__(self, "'xsltproc' is not installed")
def get_documented_parameters(sourcedir):
p = subprocess.Popen(
["xsltproc", "--xinclude", "--param", "smb.context", "ALL", "generate-context.xsl", "parameters.all.xml"],
stdout=subprocess.PIPE, cwd=os.path.join(sourcedir, "docs-xml", "smbdotconf"))
try:
p = subprocess.Popen(
["xsltproc", "--xinclude", "--param", "smb.context", "ALL", "generate-context.xsl", "parameters.all.xml"],
stdout=subprocess.PIPE, cwd=os.path.join(sourcedir, "docs-xml", "smbdotconf"))
except OSError, e:
if e.errno == errno.ENOENT:
raise NoXsltProc()
raise
out, err = p.communicate()
assert p.returncode == 0, "returncode was %r" % p.returncode
for l in out.splitlines():
@ -82,7 +95,10 @@ class SmbDotConfTests(TestCase):
def test_unknown(self):
topdir = samba.source_tree_topdir()
documented = set(get_documented_parameters(topdir))
try:
documented = set(get_documented_parameters(topdir))
except NoXsltProc:
raise TestSkipped("'xsltproc' is missing, unable to load parameters")
parameters = set(get_implementation_parameters(topdir))
# Filter out parametric options, since we can't find them in the parm
# table
@ -94,7 +110,10 @@ class SmbDotConfTests(TestCase):
def test_undocumented(self):
topdir = samba.source_tree_topdir()
documented = set(get_documented_parameters(topdir))
try:
documented = set(get_documented_parameters(topdir))
except NoXsltProc:
raise TestSkipped("'xsltproc' is missing, unable to load parameters")
parameters = set(get_implementation_parameters(topdir))
undocumented = parameters.difference(documented)
if len(undocumented) > 0: