commit f405105fe5a60fac55f388d554a4f6ea8dea8a42 Author: Isis Lovecruft isis@torproject.org Date: Fri Dec 20 02:41:53 2013 +0000
Add test_Tests.generateTrialAdaptedDoctestsSuite().
This function discovers doctests within the directory that BridgeDB was installed within, and then it builds a `twisted.trial.unittest.TestSuite` from all discovered doctests. --- lib/bridgedb/test/test_Tests.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
diff --git a/lib/bridgedb/test/test_Tests.py b/lib/bridgedb/test/test_Tests.py index f261168..b898cc4 100644 --- a/lib/bridgedb/test/test_Tests.py +++ b/lib/bridgedb/test/test_Tests.py @@ -16,7 +16,10 @@ be compatible with the newer :mod:`twisted.trial` unittests in this directory. from __future__ import print_function from __future__ import unicode_literals
+import doctest +import glob import logging +import os import warnings
from twisted.trial import unittest @@ -27,6 +30,34 @@ logging.warnings.filterwarnings('ignore', module="Tests") pyunit = __import__('unittest')
+def generateTrialAdaptedDoctestsSuite(): + """Dynamically generates a :class:`unittest.TestSuite` all containing + discovered doctests within the installed ``bridgedb`` package. + """ + bridgedb = __import__('bridgedb') + fakedGlobals = globals().update({'bridgedb': bridgedb}) + modulePath = bridgedb.__path__[0] + + #: The package directories to search for source code with doctests. + packagePaths = [modulePath, + os.path.join(modulePath, 'parse'), + os.path.join(modulePath, 'test')] + #: The source code files which will be searched for doctests. + files = [] + #: The cls.testSuites which the test methods will be generated from. + testSuites = [] + + packages = [os.path.join(pkg, '*.py') for pkg in packagePaths] + [files.extend(glob.glob(pkg)) for pkg in packages] + + for filename in files: + testSuites.append( + doctest.DocFileSuite(filename, + module_relative=False, + globs=fakedGlobals)) + return testSuites + + class OldUnittests(unittest.TestCase): """A wrapper around :mod:`bridgedb.Tests` to produce :mod:`~twisted.trial` compatible output.
tor-commits@lists.torproject.org