testtools: Import latest upstream.
[nivanova/samba-autobuild/.git] / lib / testtools / testtools / testsuite.py
index 26b193799b01b61f287d058832b341166bbb2790..fd802621e3a1ad3190fba0871eeac40b3fc8b531 100644 (file)
@@ -5,18 +5,31 @@
 __metaclass__ = type
 __all__ = [
   'ConcurrentTestSuite',
+  'iterate_tests',
   ]
 
 try:
-    import Queue
+    from Queue import Queue
 except ImportError:
-    import queue as Queue
+    from queue import Queue
 import threading
 import unittest
 
 import testtools
 
 
+def iterate_tests(test_suite_or_case):
+    """Iterate through all of the test cases in 'test_suite_or_case'."""
+    try:
+        suite = iter(test_suite_or_case)
+    except TypeError:
+        yield test_suite_or_case
+    else:
+        for test in suite:
+            for subtest in iterate_tests(test):
+                yield subtest
+
+
 class ConcurrentTestSuite(unittest.TestSuite):
     """A TestSuite whose run() calls out to a concurrency strategy."""
 
@@ -49,7 +62,7 @@ class ConcurrentTestSuite(unittest.TestSuite):
         tests = self.make_tests(self)
         try:
             threads = {}
-            queue = Queue.Queue()
+            queue = Queue()
             result_semaphore = threading.Semaphore(1)
             for test in tests:
                 process_result = testtools.ThreadsafeForwardingResult(result,