|
6 | 6 | import collections |
7 | 7 | import itertools |
8 | 8 | import os |
9 | | -import multiprocessing |
10 | 9 | import pytest |
11 | 10 | import time |
12 | 11 | import tempfile |
@@ -261,41 +260,17 @@ def test_dependencies(self): |
261 | 260 | assert os.path.exists(os.path.join(check.outputdir, 'out.txt')) |
262 | 261 |
|
263 | 262 | def test_sigterm(self): |
264 | | - # Wrapper of self.runall which is used from a child process and |
265 | | - # passes any exception, number of cases and failures to the parent |
266 | | - # process |
267 | | - def _runall(checks, ns): |
268 | | - exc = None |
269 | | - try: |
270 | | - self.runall(checks) |
271 | | - except BaseException as e: |
272 | | - exc = e |
273 | | - finally: |
274 | | - ns.exc = exc |
275 | | - ns.num_cases = self.runner.stats.num_cases() |
276 | | - ns.num_failures = len(self.runner.stats.failures()) |
277 | | - |
278 | | - with multiprocessing.Manager() as manager: |
279 | | - ns = manager.Namespace() |
280 | | - p = multiprocessing.Process(target=_runall, |
281 | | - args=([SleepCheck(20)], ns)) |
282 | | - |
283 | | - p.start() |
284 | | - |
285 | | - # Allow some time so that the SleepCheck is submitted. |
286 | | - # The sleep time of the submitted test is much larger to |
287 | | - # ensure that it does not finish before the termination signal |
288 | | - time.sleep(0.2) |
289 | | - p.terminate() |
290 | | - p.join() |
291 | | - |
292 | | - # Either the test is submitted and it fails due to the termination |
293 | | - # or it is not yet submitted when the termination signal is sent |
294 | | - assert (ns.num_cases, ns.num_failures) in {(1, 1), (0, 0)} |
295 | | - with pytest.raises(ReframeForceExitError, |
296 | | - match='received TERM signal'): |
297 | | - if ns.exc: |
298 | | - raise ns.exc |
| 263 | + self.loader = RegressionCheckLoader( |
| 264 | + ['unittests/resources/checks_unlisted/selfkill.py'] |
| 265 | + ) |
| 266 | + checks = self.loader.load_all() |
| 267 | + with pytest.raises(ReframeForceExitError, |
| 268 | + match='received TERM signal'): |
| 269 | + self.runall(checks) |
| 270 | + |
| 271 | + self.assert_all_dead() |
| 272 | + assert self.runner.stats.num_cases() == 1 |
| 273 | + assert len(self.runner.stats.failures()) == 1 |
299 | 274 |
|
300 | 275 | def test_dependencies_with_retries(self): |
301 | 276 | self.runner._max_retries = 2 |
|
0 commit comments