From 3f0d342d397bdca5f02ed3f761a9f171afe31fdf Mon Sep 17 00:00:00 2001 From: Elizaveta Shashkova Date: Thu, 12 Oct 2017 19:46:52 +0300 Subject: [PATCH] Updates from PyDev: Support for running code-coverage with pytest. --- python/helpers/pydev/pydev_coverage.py | 4 ++-- python/helpers/pydev/runfiles.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/python/helpers/pydev/pydev_coverage.py b/python/helpers/pydev/pydev_coverage.py index cefe723d0f49..cd38c076fe6e 100644 --- a/python/helpers/pydev/pydev_coverage.py +++ b/python/helpers/pydev/pydev_coverage.py @@ -46,8 +46,8 @@ def execute(): version = tuple(map(int, coverage.__version__.split('.'))[:2]) if version < (4, 3): - sys.stderr.write('Error: minimum supported coverage version is 4.3.') - sys.exit(1) + sys.stderr.write('Error: minimum supported coverage version is 4.3.\nFound: %s\nLocation: %s' % ('.'.join(str(x) for x in version), coverage.__file__)) + sys.exit(1) #print(coverage.__version__) TODO: Check if the version is a version we support (should be at least 3.4) -- note that maybe the attr is not there. from coverage.cmdline import main #@UnresolvedImport diff --git a/python/helpers/pydev/runfiles.py b/python/helpers/pydev/runfiles.py index 360e602d6367..00148b240045 100644 --- a/python/helpers/pydev/runfiles.py +++ b/python/helpers/pydev/runfiles.py @@ -158,6 +158,23 @@ def main(): return not nose.run(argv=argv, addplugins=[PYDEV_NOSE_PLUGIN_SINGLETON]) elif test_framework == PY_TEST_FRAMEWORK: + + if '--coverage_output_dir' in pydev_params and '--coverage_include' in pydev_params: + coverage_output_dir = pydev_params[pydev_params.index('--coverage_output_dir') + 1] + coverage_include = pydev_params[pydev_params.index('--coverage_include') + 1] + try: + import pytest_cov + except ImportError: + sys.stderr.write('To do a coverage run with pytest the pytest-cov library is needed (i.e.: pip install pytest-cov).\n\n') + raise + + argv.insert(0, '--cov-append') + argv.insert(1, '--cov-report=') + argv.insert(2, '--cov=%s' % (coverage_include,)) + + import time + os.environ['COVERAGE_FILE'] = os.path.join(coverage_output_dir, '.coverage.%s' % (time.time(),)) + if DEBUG: sys.stdout.write('Final test framework args: %s\n' % (argv,)) sys.stdout.write('py_test_accept_filter: %s\n' % (py_test_accept_filter,))