[Python-checkins] cpython: Issue #15132: Allow a list for the defaultTest argument of unittest.TestProgram

petri.lehtinen python-checkins at python.org
Sat Feb 23 18:56:32 CET 2013


http://hg.python.org/cpython/rev/4e2bfe6b227a
changeset:   82347:4e2bfe6b227a
user:        Petri Lehtinen <petri at digip.org>
date:        Sat Feb 23 18:52:51 2013 +0100
summary:
  Issue #15132: Allow a list for the defaultTest argument of unittest.TestProgram

Patch by Jyrki Pulliainen

files:
  Lib/unittest/main.py              |   5 ++-
  Lib/unittest/test/test_program.py |  35 +++++++++++++++++++
  Misc/NEWS                         |   3 +
  3 files changed, 42 insertions(+), 1 deletions(-)


diff --git a/Lib/unittest/main.py b/Lib/unittest/main.py
--- a/Lib/unittest/main.py
+++ b/Lib/unittest/main.py
@@ -164,7 +164,10 @@
                 # 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):
diff --git a/Lib/unittest/test/test_program.py b/Lib/unittest/test/test_program.py
--- a/Lib/unittest/test/test_program.py
+++ b/Lib/unittest/test/test_program.py
@@ -64,6 +64,41 @@
             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,
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -260,6 +260,9 @@
 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.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list