@@ -71,15 +71,22 @@ def testExpectedFailure(self):
71
71
def testUnexpectedSuccess (self ):
72
72
pass
73
73
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
+
76
83
def loadTestsFromModule (self , module ):
77
84
return self .suiteClass (
78
- [self .loadTestsFromTestCase (Test_TestProgram . FooBar )])
85
+ [self .loadTestsFromTestCase (self . testcase )])
79
86
80
87
def loadTestsFromNames (self , names , module ):
81
88
return self .suiteClass (
82
- [self .loadTestsFromTestCase (Test_TestProgram . FooBar )])
89
+ [self .loadTestsFromTestCase (self . testcase )])
83
90
84
91
def test_defaultTest_with_string (self ):
85
92
class FakeRunner (object ):
@@ -92,7 +99,7 @@ def run(self, test):
92
99
runner = FakeRunner ()
93
100
program = unittest .TestProgram (testRunner = runner , exit = False ,
94
101
defaultTest = 'test.test_unittest' ,
95
- testLoader = self .FooBarLoader ( ))
102
+ testLoader = self .TestLoader ( self . FooBar ))
96
103
sys .argv = old_argv
97
104
self .assertEqual (('test.test_unittest' ,), program .testNames )
98
105
@@ -108,7 +115,7 @@ def run(self, test):
108
115
program = unittest .TestProgram (
109
116
testRunner = runner , exit = False ,
110
117
defaultTest = ['test.test_unittest' , 'test.test_unittest2' ],
111
- testLoader = self .FooBarLoader ( ))
118
+ testLoader = self .TestLoader ( self . FooBar ))
112
119
sys .argv = old_argv
113
120
self .assertEqual (['test.test_unittest' , 'test.test_unittest2' ],
114
121
program .testNames )
@@ -118,7 +125,7 @@ def test_NonExit(self):
118
125
program = unittest .main (exit = False ,
119
126
argv = ["foobar" ],
120
127
testRunner = unittest .TextTestRunner (stream = stream ),
121
- testLoader = self .FooBarLoader ( ))
128
+ testLoader = self .TestLoader ( self . FooBar ))
122
129
self .assertTrue (hasattr (program , 'result' ))
123
130
out = stream .getvalue ()
124
131
self .assertIn ('\n FAIL: testFail ' , out )
@@ -130,13 +137,13 @@ def test_NonExit(self):
130
137
131
138
def test_Exit (self ):
132
139
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 )
140
147
out = stream .getvalue ()
141
148
self .assertIn ('\n FAIL: testFail ' , out )
142
149
self .assertIn ('\n ERROR: testError ' , out )
@@ -147,12 +154,11 @@ def test_Exit(self):
147
154
148
155
def test_ExitAsDefault (self ):
149
156
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 ))
156
162
out = stream .getvalue ()
157
163
self .assertIn ('\n FAIL: testFail ' , out )
158
164
self .assertIn ('\n ERROR: testError ' , out )
@@ -161,6 +167,17 @@ def test_ExitAsDefault(self):
161
167
'expected failures=1, unexpected successes=1)\n ' )
162
168
self .assertTrue (out .endswith (expected ))
163
169
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
+
164
181
165
182
class InitialisableProgram (unittest .TestProgram ):
166
183
exit = False
0 commit comments