Viewing file: ss_20010301.py (5.92 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#Stefan Seefeld <seefeld@sympatico.ca> has trouble with the docbook stylesheets
import os, re
from Xml.Xslt import test_harness
from Ft.Lib.Uri import OsPathToUri
# The name of the environment variable that will indicate # the location of DocBook XSL docbook-xsl-#.#.# directory KEYNAME = 'DOCBOOK_HOME'
source_1 = """\ <book> <chapter> <title>Chapter</title> <sect1> <title>Sect1</title> <sect2> <title>Sect2</title> </sect2> </sect1> </chapter> </book> """
MIN_VERSION = '1.64.0' # NOTE: there is a '%s' for the actual version of docbook used # # docbook-xsl-1.68.0 and up expected_1_1680 = """\ <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title></title><meta content="DocBook XSL Stylesheets V%s" name="generator"></head><body alink="#0000FF" bgcolor="white" vlink="#840084" link="#0000FF" text="black"><div lang="en" class="book"><div class="titlepage"><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#id3">1. Chapter</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2">Sect1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1">Sect2</a></span></dt></dl></dd></dl></dd></dl></div><div lang="en" class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="id3"></a>Chapter 1. Chapter</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2">Sect1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1">Sect2</a></span></dt></dl></dd></dl></div><div lang="en" class="sect1"><div class="titlepage"><div><div><h2 style="clear: both" class="title"><a name="id2"></a>Sect1</h2></div></div></div><div lang="en" class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1"></a>Sect2</h3></div></div></div></div></div></div></div></body></html>"""
# docbook-xsl-1.64.0(?) and up; expected_1 = """\ <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title></title><meta content="DocBook XSL Stylesheets V%s" name="generator"></head><body alink="#0000FF" bgcolor="white" vlink="#840084" link="#0000FF" text="black"><div lang="en" class="book"><div class="titlepage"><div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#id3">1. Chapter</a></span></dt><dd><dl><dt><span class="sect1"><a href="#id2">Sect1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1">Sect2</a></span></dt></dl></dd></dl></dd></dl></div><div lang="en" class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="id3"></a>Chapter 1. Chapter</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2">Sect1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id1">Sect2</a></span></dt></dl></dd></dl></div><div lang="en" class="sect1"><div class="titlepage"><div><div><h2 style="clear: both" class="title"><a name="id2"></a>Sect1</h2></div></div><div></div></div><div lang="en" class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1"></a>Sect2</h3></div></div><div></div></div></div></div></div></div></body></html>"""
def Test(tester): tester.startTest('Check for DocBook XSL stylesheets')
dirs = ["/usr/share/sgml/docbook/xsl-stylesheets", #default for docbook-style-xsl RPM "/usr/local/share/xsl/docbook", #default for FreeBSD textproc/docbook-xsl port ]
DOCBOOK_DIR = None for dir in dirs: if os.path.isdir(dir): DOCBOOK_DIR = dir break
DOCBOOK_DIR = os.environ.get(KEYNAME, DOCBOOK_DIR) if not DOCBOOK_DIR: tester.warning( "You need Norm Walsh's DocBook XSL stylesheet package for this test.\n" "You can either ignore this, or you can install the DocBook XSL\n" "stylesheets and re-run this test. Get the docbook-xsl package from\n" "http://sourceforge.net/project/showfiles.php?group_id=21935\n" "Install it in anywhere, and then before running this test, set\n" "the environment variable %r to the absolute path\n" "of the docbook-xsl-#.#.# directory on your filesystem.\n" % KEYNAME) tester.testDone() return
if not os.path.isdir(DOCBOOK_DIR): tester.warning("Unable to find DocBook stylesheet directory %r" % DOCBOOK_DIR) tester.testDone() return
VERSION_FILE = os.path.join(DOCBOOK_DIR, 'VERSION') if os.path.isfile(VERSION_FILE): VERSION = open(VERSION_FILE).read() match = re.search(r'>\s*(\d[.0-9]+)\s*<', VERSION) if not match: tester.warning("Unable to determine version of DocBook stylesheets\n" "Format of %r unrecognized." % VERSION_FILE) tester.testDone() return version = match.group(1) if version <= MIN_VERSION: tester.warning("DocBook XSL version %s or higher needed;" " version %s found." % (MIN_VERSION, version)) tester.testDone() return else: tester.warning("Unable to determine version of DocBook stylesheets\n" "Was looking for file %r." % VERSION_FILE) tester.testDone() return
STYLESHEET = os.path.join(DOCBOOK_DIR, 'html', 'docbook.xsl') if not os.path.isfile(STYLESHEET): tester.warning("Unable to find DocBook stylesheet %r" % STYLESHEET) tester.testDone() return
STYLESHEET_URI = OsPathToUri(STYLESHEET) tester.testDone()
source = test_harness.FileInfo(string=source_1) if version >= '1.68': expected = expected_1_1680 % version else: expected = expected_1 % version sheet = test_harness.FileInfo(uri=STYLESHEET_URI) test_harness.XsltTest(tester, source, [sheet], expected, title="Basic DocBook XSL processing") return
|