@@ -1120,6 +1120,160 @@ def test_fail_once(self):
1120
1120
self .check_executed_tests (output , [testname ],
1121
1121
rerun = {testname : "test_fail_once" })
1122
1122
1123
+ def test_rerun_setup_class_hook_failure (self ):
1124
+ # FAILURE then FAILURE
1125
+ code = textwrap .dedent ("""
1126
+ import unittest
1127
+
1128
+ class ExampleTests(unittest.TestCase):
1129
+ @classmethod
1130
+ def setUpClass(self):
1131
+ raise RuntimeError('Fail')
1132
+
1133
+ def test_success(self):
1134
+ return
1135
+ """ )
1136
+ testname = self .create_test (code = code )
1137
+
1138
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1139
+ self .check_executed_tests (output , testname ,
1140
+ failed = [testname ],
1141
+ rerun = {testname : "ExampleTests" })
1142
+
1143
+ def test_rerun_teardown_class_hook_failure (self ):
1144
+ # FAILURE then FAILURE
1145
+ code = textwrap .dedent ("""
1146
+ import unittest
1147
+
1148
+ class ExampleTests(unittest.TestCase):
1149
+ @classmethod
1150
+ def tearDownClass(self):
1151
+ raise RuntimeError('Fail')
1152
+
1153
+ def test_success(self):
1154
+ return
1155
+ """ )
1156
+ testname = self .create_test (code = code )
1157
+
1158
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1159
+ self .check_executed_tests (output , testname ,
1160
+ failed = [testname ],
1161
+ rerun = {testname : "ExampleTests" })
1162
+
1163
+ def test_rerun_setup_module_hook_failure (self ):
1164
+ # FAILURE then FAILURE
1165
+ code = textwrap .dedent ("""
1166
+ import unittest
1167
+
1168
+ def setUpModule():
1169
+ raise RuntimeError('Fail')
1170
+
1171
+ class ExampleTests(unittest.TestCase):
1172
+ def test_success(self):
1173
+ return
1174
+ """ )
1175
+ testname = self .create_test (code = code )
1176
+
1177
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1178
+ self .check_executed_tests (output , testname ,
1179
+ failed = [testname ],
1180
+ rerun = {testname : testname })
1181
+
1182
+ def test_rerun_teardown_module_hook_failure (self ):
1183
+ # FAILURE then FAILURE
1184
+ code = textwrap .dedent ("""
1185
+ import unittest
1186
+
1187
+ def tearDownModule():
1188
+ raise RuntimeError('Fail')
1189
+
1190
+ class ExampleTests(unittest.TestCase):
1191
+ def test_success(self):
1192
+ return
1193
+ """ )
1194
+ testname = self .create_test (code = code )
1195
+
1196
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1197
+ self .check_executed_tests (output , testname ,
1198
+ failed = [testname ],
1199
+ rerun = {testname : testname })
1200
+
1201
+ def test_rerun_setup_hook_failure (self ):
1202
+ # FAILURE then FAILURE
1203
+ code = textwrap .dedent ("""
1204
+ import unittest
1205
+
1206
+ class ExampleTests(unittest.TestCase):
1207
+ def setUp(self):
1208
+ raise RuntimeError('Fail')
1209
+
1210
+ def test_success(self):
1211
+ return
1212
+ """ )
1213
+ testname = self .create_test (code = code )
1214
+
1215
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1216
+ self .check_executed_tests (output , testname ,
1217
+ failed = [testname ],
1218
+ rerun = {testname : "test_success" })
1219
+
1220
+ def test_rerun_teardown_hook_failure (self ):
1221
+ # FAILURE then FAILURE
1222
+ code = textwrap .dedent ("""
1223
+ import unittest
1224
+
1225
+ class ExampleTests(unittest.TestCase):
1226
+ def tearDown(self):
1227
+ raise RuntimeError('Fail')
1228
+
1229
+ def test_success(self):
1230
+ return
1231
+ """ )
1232
+ testname = self .create_test (code = code )
1233
+
1234
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1235
+ self .check_executed_tests (output , testname ,
1236
+ failed = [testname ],
1237
+ rerun = {testname : "test_success" })
1238
+
1239
+ def test_rerun_async_setup_hook_failure (self ):
1240
+ # FAILURE then FAILURE
1241
+ code = textwrap .dedent ("""
1242
+ import unittest
1243
+
1244
+ class ExampleTests(unittest.IsolatedAsyncioTestCase):
1245
+ async def asyncSetUp(self):
1246
+ raise RuntimeError('Fail')
1247
+
1248
+ async def test_success(self):
1249
+ return
1250
+ """ )
1251
+ testname = self .create_test (code = code )
1252
+
1253
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1254
+ self .check_executed_tests (output , testname ,
1255
+ failed = [testname ],
1256
+ rerun = {testname : "test_success" })
1257
+
1258
+ def test_rerun_async_teardown_hook_failure (self ):
1259
+ # FAILURE then FAILURE
1260
+ code = textwrap .dedent ("""
1261
+ import unittest
1262
+
1263
+ class ExampleTests(unittest.IsolatedAsyncioTestCase):
1264
+ async def asyncTearDown(self):
1265
+ raise RuntimeError('Fail')
1266
+
1267
+ async def test_success(self):
1268
+ return
1269
+ """ )
1270
+ testname = self .create_test (code = code )
1271
+
1272
+ output = self .run_tests ("-w" , testname , exitcode = EXITCODE_BAD_TEST )
1273
+ self .check_executed_tests (output , testname ,
1274
+ failed = [testname ],
1275
+ rerun = {testname : "test_success" })
1276
+
1123
1277
def test_no_tests_ran (self ):
1124
1278
code = textwrap .dedent ("""
1125
1279
import unittest
0 commit comments