diff options
author | Bert JW Regeer <bertjw@regeer.org> | 2019-12-18 16:43:50 +0100 |
---|---|---|
committer | Bert JW Regeer <bertjw@regeer.org> | 2019-12-19 15:58:30 +0100 |
commit | 1809765a65076844b67a122b4a573bcba36e2dcd (patch) | |
tree | d8495c569fba71eb769f02cc7992568bd339b4cc | |
parent | dfb95011c50c91e490a336c2c644973da3cced9c (diff) | |
download | waitress-1809765a65076844b67a122b4a573bcba36e2dcd.tar.gz |
Fix coverage reporting of subprocess in coverage 5.x
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | waitress/tests/test_functional.py | 15 |
2 files changed, 8 insertions, 9 deletions
@@ -29,7 +29,7 @@ docs_extras = [ testing_extras = [ "nose", - "coverage", + "coverage>=5.0", ] setup( diff --git a/waitress/tests/test_functional.py b/waitress/tests/test_functional.py index 2225d6a..bfe5072 100644 --- a/waitress/tests/test_functional.py +++ b/waitress/tests/test_functional.py @@ -35,16 +35,10 @@ def start_server(app, svr, queue, **kwargs): # pragma: no cover def try_register_coverage(): # pragma: no cover # Hack around multiprocessing exiting early and not triggering coverage's - # atexit handler by trapping the SIGTERM and saving coverage explicitly. - if "_COVERAGE_RCFILE" in os.environ: - import coverage - - cov = coverage.Coverage(config_file=os.getenv("_COVERAGE_RCFILE")) - cov.start() + # atexit handler by always registering a signal handler + if "COVERAGE_PROCESS_START" in os.environ: def sigterm(*args): - cov.stop() - cov.save() sys.exit(0) signal.signal(signal.SIGTERM, sigterm) @@ -78,10 +72,15 @@ class SubprocessTests(object): def start_subprocess(self, target, **kw): # Spawn a server process. self.queue = multiprocessing.Queue() + + if "COVERAGE_RCFILE" in os.environ: + os.environ["COVERAGE_PROCESS_START"] = os.environ["COVERAGE_RCFILE"] + self.proc = multiprocessing.Process( target=start_server, args=(target, self.server, self.queue), kwargs=kw, ) self.proc.start() + if self.proc.exitcode is not None: # pragma: no cover raise RuntimeError("%s didn't start" % str(target)) # Get the socket the server is listening on. |