testtools: Update to latest upstream version.
[kai/samba.git] / lib / testtools / testtools / tests / test_testsuite.py
index 426bec4cc4414492584bd552e0c4625f3fb04e78..3fc837c701d3c28adbc48beb94d1f3a59cc213f1 100644 (file)
@@ -9,10 +9,11 @@ import unittest
 from testtools import (
     ConcurrentTestSuite,
     iterate_tests,
+    PlaceHolder,
     TestCase,
     )
 from testtools.helpers import try_import
-from testtools.testsuite import FixtureSuite
+from testtools.testsuite import FixtureSuite, iterate_tests, sorted_tests
 from testtools.tests.helpers import LoggingResult
 
 FunctionFixture = try_import('fixtures.FunctionFixture')
@@ -93,6 +94,35 @@ class TestFixtureSuite(TestCase):
         self.assertEqual(['setUp', 1, 2, 'tearDown'], log)
 
 
+class TestSortedTests(TestCase):
+
+    def test_sorts_custom_suites(self):
+        a = PlaceHolder('a')
+        b = PlaceHolder('b')
+        class Subclass(unittest.TestSuite):
+            def sort_tests(self):
+                self._tests = sorted_tests(self, True)
+        input_suite = Subclass([b, a])
+        suite = sorted_tests(input_suite)
+        self.assertEqual([a, b], list(iterate_tests(suite)))
+        self.assertEqual([input_suite], list(iter(suite)))
+
+    def test_custom_suite_without_sort_tests_works(self):
+        a = PlaceHolder('a')
+        b = PlaceHolder('b')
+        class Subclass(unittest.TestSuite):pass
+        input_suite = Subclass([b, a])
+        suite = sorted_tests(input_suite)
+        self.assertEqual([b, a], list(iterate_tests(suite)))
+        self.assertEqual([input_suite], list(iter(suite)))
+
+    def test_sorts_simple_suites(self):
+        a = PlaceHolder('a')
+        b = PlaceHolder('b')
+        suite = sorted_tests(unittest.TestSuite([b, a]))
+        self.assertEqual([a, b], list(iterate_tests(suite)))
+
+
 def test_suite():
     from unittest import TestLoader
     return TestLoader().loadTestsFromName(__name__)