[tor-commits] [bridgedb/master] Add test_Tests.generateTrialAdaptedDoctestsSuite().

isis at torproject.org isis at torproject.org
Sun Jan 12 06:06:35 UTC 2014


commit f405105fe5a60fac55f388d554a4f6ea8dea8a42
Author: Isis Lovecruft <isis at 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.





More information about the tor-commits mailing list