import six import doctest from paste.util.import_string import simple_import import os filenames = [ 'tests/template.txt', ] modules = [ 'paste.util.template', 'paste.util.looper', # This one opens up httpserver, which is bad: #'paste.auth.cookie', #'paste.auth.multi', #'paste.auth.digest', #'paste.auth.basic', #'paste.auth.form', #'paste.progress', 'paste.exceptions.serial_number_generator', 'paste.evalexception.evalcontext', 'paste.util.dateinterval', 'paste.util.quoting', 'paste.wsgilib', 'paste.url', 'paste.request', ] options = doctest.ELLIPSIS | doctest.REPORT_ONLY_FIRST_FAILURE if six.PY3: options |= doctest.IGNORE_EXCEPTION_DETAIL def test_doctests(): for filename in filenames: filename = os.path.join( os.path.dirname(os.path.dirname(__file__)), filename) yield do_doctest, filename def do_doctest(filename): failure, total = doctest.testfile( filename, module_relative=False, optionflags=options) assert not failure, "Failure in %r" % filename def test_doctest_mods(): for module in modules: yield do_doctest_mod, module def do_doctest_mod(module): module = simple_import(module) failure, total = doctest.testmod( module, optionflags=options) assert not failure, "Failure in %r" % module if __name__ == '__main__': import sys import doctest args = sys.argv[1:] if not args: args = filenames for filename in args: doctest.testfile(filename, module_relative=False)