@@ -71,15 +71,22 @@ def testExpectedFailure(self):
7171 def testUnexpectedSuccess (self ):
7272 pass
7373
74- class FooBarLoader (unittest .TestLoader ):
75- """Test loader that returns a suite containing FooBar."""
74+ class Empty (unittest .TestCase ):
75+ pass
76+
77+ class TestLoader (unittest .TestLoader ):
78+ """Test loader that returns a suite containing the supplied testcase."""
79+
80+ def __init__ (self , testcase ):
81+ self .testcase = testcase
82+
7683 def loadTestsFromModule (self , module ):
7784 return self .suiteClass (
78- [self .loadTestsFromTestCase (Test_TestProgram . FooBar )])
85+ [self .loadTestsFromTestCase (self . testcase )])
7986
8087 def loadTestsFromNames (self , names , module ):
8188 return self .suiteClass (
82- [self .loadTestsFromTestCase (Test_TestProgram . FooBar )])
89+ [self .loadTestsFromTestCase (self . testcase )])
8390
8491 def test_defaultTest_with_string (self ):
8592 class FakeRunner (object ):
@@ -92,7 +99,7 @@ def run(self, test):
9299 runner = FakeRunner ()
93100 program = unittest .TestProgram (testRunner = runner , exit = False ,
94101 defaultTest = 'test.test_unittest' ,
95- testLoader = self .FooBarLoader ( ))
102+ testLoader = self .TestLoader ( self . FooBar ))
96103 sys .argv = old_argv
97104 self .assertEqual (('test.test_unittest' ,), program .testNames )
98105
@@ -108,7 +115,7 @@ def run(self, test):
108115 program = unittest .TestProgram (
109116 testRunner = runner , exit = False ,
110117 defaultTest = ['test.test_unittest' , 'test.test_unittest2' ],
111- testLoader = self .FooBarLoader ( ))
118+ testLoader = self .TestLoader ( self . FooBar ))
112119 sys .argv = old_argv
113120 self .assertEqual (['test.test_unittest' , 'test.test_unittest2' ],
114121 program .testNames )
@@ -118,7 +125,7 @@ def test_NonExit(self):
118125 program = unittest .main (exit = False ,
119126 argv = ["foobar" ],
120127 testRunner = unittest .TextTestRunner (stream = stream ),
121- testLoader = self .FooBarLoader ( ))
128+ testLoader = self .TestLoader ( self . FooBar ))
122129 self .assertTrue (hasattr (program , 'result' ))
123130 out = stream .getvalue ()
124131 self .assertIn ('\n FAIL: testFail ' , out )
@@ -130,13 +137,13 @@ def test_NonExit(self):
130137
131138 def test_Exit (self ):
132139 stream = BufferedWriter ()
133- self .assertRaises (
134- SystemExit ,
135- unittest . main ,
136- argv = [ "foobar" ] ,
137- testRunner = unittest . TextTestRunner ( stream = stream ) ,
138- exit = True ,
139- testLoader = self .FooBarLoader () )
140+ with self .assertRaises (SystemExit ) as cm :
141+ unittest . main (
142+ argv = [ "foobar" ] ,
143+ testRunner = unittest . TextTestRunner ( stream = stream ) ,
144+ exit = True ,
145+ testLoader = self . TestLoader ( self . FooBar ))
146+ self .assertEqual ( cm . exception . code , 1 )
140147 out = stream .getvalue ()
141148 self .assertIn ('\n FAIL: testFail ' , out )
142149 self .assertIn ('\n ERROR: testError ' , out )
@@ -147,12 +154,11 @@ def test_Exit(self):
147154
148155 def test_ExitAsDefault (self ):
149156 stream = BufferedWriter ()
150- self .assertRaises (
151- SystemExit ,
152- unittest .main ,
153- argv = ["foobar" ],
154- testRunner = unittest .TextTestRunner (stream = stream ),
155- testLoader = self .FooBarLoader ())
157+ with self .assertRaises (SystemExit ):
158+ unittest .main (
159+ argv = ["foobar" ],
160+ testRunner = unittest .TextTestRunner (stream = stream ),
161+ testLoader = self .TestLoader (self .FooBar ))
156162 out = stream .getvalue ()
157163 self .assertIn ('\n FAIL: testFail ' , out )
158164 self .assertIn ('\n ERROR: testError ' , out )
@@ -161,6 +167,17 @@ def test_ExitAsDefault(self):
161167 'expected failures=1, unexpected successes=1)\n ' )
162168 self .assertTrue (out .endswith (expected ))
163169
170+ def test_ExitEmptySuite (self ):
171+ stream = BufferedWriter ()
172+ with self .assertRaises (SystemExit ) as cm :
173+ unittest .main (
174+ argv = ["empty" ],
175+ testRunner = unittest .TextTestRunner (stream = stream ),
176+ testLoader = self .TestLoader (self .Empty ))
177+ self .assertEqual (cm .exception .code , 5 )
178+ out = stream .getvalue ()
179+ self .assertIn ('\n NO TESTS RAN\n ' , out )
180+
164181
165182class InitialisableProgram (unittest .TestProgram ):
166183 exit = False
0 commit comments