Run unit tests in isolation w/ coverage support.

This commit is contained in:
Matt Clay 2017-02-23 16:58:57 -08:00
parent d0e1a1c6c3
commit fcac261eef
5 changed files with 36 additions and 1 deletions

33
test/units/conftest.py Normal file
View file

@ -0,0 +1,33 @@
"""Monkey patch os._exit when running under coverage so we don't lose coverage data in forks, such as with `pytest --boxed`."""
import gc
import os
try:
import coverage
except ImportError:
coverage = None
def pytest_configure():
if not coverage:
return
coverage_instances = []
for obj in gc.get_objects():
if isinstance(obj, coverage.Coverage):
coverage_instances.append(obj)
if not coverage_instances:
return
os_exit = os._exit
def coverage_exit(*args, **kwargs):
for instance in coverage_instances:
instance.stop()
instance.save()
os_exit(*args, **kwargs)
os._exit = coverage_exit