]> granicus.if.org Git - python/commitdiff
Issue #15132: Allow a list for the defaultTest argument of unittest.TestProgram
authorPetri Lehtinen <petri@digip.org>
Sat, 23 Feb 2013 17:52:51 +0000 (18:52 +0100)
committerPetri Lehtinen <petri@digip.org>
Sat, 23 Feb 2013 17:55:49 +0000 (18:55 +0100)
Patch by Jyrki Pulliainen

Lib/unittest/main.py
Lib/unittest/test/test_program.py
Misc/NEWS

index ead64936a0b9abcf93f3c7903688bf043a6b5d62..edb141ac915a8618f90ae4cc370cd6906fd29d21 100644 (file)
@@ -164,7 +164,10 @@ class TestProgram(object):
                 # to support python -m unittest ...
                 self.module = None
         else:
-            self.testNames = (self.defaultTest,)
+            if isinstance(self.defaultTest, str):
+                self.testNames = (self.defaultTest,)
+            else:
+                self.testNames = list(self.defaultTest)
         self.createTests()
 
     def createTests(self):
index 9794868f6d5929a4d471f7c47a9371a0b44ad288..8e02f3cf149df2e1d56c0a388437e10e08aedeb4 100644 (file)
@@ -64,6 +64,41 @@ class Test_TestProgram(unittest.TestCase):
             return self.suiteClass(
                 [self.loadTestsFromTestCase(Test_TestProgram.FooBar)])
 
+        def loadTestsFromNames(self, names, module):
+            return self.suiteClass(
+                [self.loadTestsFromTestCase(Test_TestProgram.FooBar)])
+
+    def test_defaultTest_with_string(self):
+        class FakeRunner(object):
+            def run(self, test):
+                self.test = test
+                return True
+
+        old_argv = sys.argv
+        sys.argv = ['faketest']
+        runner = FakeRunner()
+        program = unittest.TestProgram(testRunner=runner, exit=False,
+                                       defaultTest='unittest.test',
+                                       testLoader=self.FooBarLoader())
+        sys.argv = old_argv
+        self.assertEquals(('unittest.test',), program.testNames)
+
+    def test_defaultTest_with_iterable(self):
+        class FakeRunner(object):
+            def run(self, test):
+                self.test = test
+                return True
+
+        old_argv = sys.argv
+        sys.argv = ['faketest']
+        runner = FakeRunner()
+        program = unittest.TestProgram(
+            testRunner=runner, exit=False,
+            defaultTest=['unittest.test', 'unittest.test2'],
+            testLoader=self.FooBarLoader())
+        sys.argv = old_argv
+        self.assertEquals(['unittest.test', 'unittest.test2'],
+                          program.testNames)
 
     def test_NonExit(self):
         program = unittest.main(exit=False,
index a2777cede5b65d4a7b491c600cee3b5473018eb4..e048d6d5cc69ab318160d31acb73217152a82bc3 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -260,6 +260,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #15132: Allow a list for the defaultTest argument of
+  unittest.TestProgram. Patch by Jyrki Pulliainen.
+
 - Issue #17225: JSON decoder now counts columns in the first line starting
   with 1, as in other lines.