Source code for tl.testing.doctest

# Copyright (c) 2011-2012 Thomas Lotze
# See also LICENSE.txt

"""Constructing test suites that use manuel.

"""

from __future__ import absolute_import

import doctest
import manuel.doctest
import manuel.footnote
import manuel.testing
import os.path
import unittest


[docs]def DocFileSuite(*paths, **options): """Return a TestSuite that runs doc-test files using manuel. Parameters that are the same as for Python's standard doctest.TestSuite: module_relative, package, setUp, tearDown, globs, optionflags, checker footnotes: whether to interpret footnotes manuel: optional manuel.Manuel instance with additional behaviour """ suite = unittest.TestSuite() m = manuel.doctest.Manuel(optionflags=options.pop('optionflags', 0), checker=options.pop('checker', None)) if options.pop('footnotes', False): m += manuel.footnote.Manuel() if 'manuel' in options: m += options.pop('manuel') relative = options.pop('module_relative', True) package = options.pop('package', None) for path in sorted(paths): if relative and not os.path.isabs(path): calling_module = doctest._normalize_module(package) path = doctest._module_relative_path(calling_module, path) path = os.path.abspath(path) try: suite.addTest(manuel.testing.TestSuite(m, path, **options)) except: print print 'Error: could not parse doctest file', path print raise return suite