summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert JW Regeer <bertjw@regeer.org>2019-12-18 16:43:50 +0100
committerBert JW Regeer <bertjw@regeer.org>2019-12-19 15:58:30 +0100
commit1809765a65076844b67a122b4a573bcba36e2dcd (patch)
treed8495c569fba71eb769f02cc7992568bd339b4cc
parentdfb95011c50c91e490a336c2c644973da3cced9c (diff)
downloadwaitress-1809765a65076844b67a122b4a573bcba36e2dcd.tar.gz
Fix coverage reporting of subprocess in coverage 5.x
-rw-r--r--setup.py2
-rw-r--r--waitress/tests/test_functional.py15
2 files changed, 8 insertions, 9 deletions
diff --git a/setup.py b/setup.py
index 13a9d58..c2f286b 100644
--- a/setup.py
+++ b/setup.py
@@ -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.