Merge pull request #8727 from edx/clytwynec/TE-878
use 1 coveragerc file to generate 1 coverage report per build
This commit is contained in:
46
.coveragerc
Normal file
46
.coveragerc
Normal file
@@ -0,0 +1,46 @@
|
||||
# .coveragerc for edx-platform
|
||||
[run]
|
||||
data_file = reports/.coverage
|
||||
source =
|
||||
cms
|
||||
common/djangoapps
|
||||
common/lib/calc
|
||||
common/lib/capa
|
||||
common/lib/xmodule
|
||||
lms
|
||||
openedx/core/djangoapps
|
||||
pavelib
|
||||
|
||||
omit =
|
||||
cms/envs/*
|
||||
cms/manage.py
|
||||
cms/djangoapps/*/migrations/*
|
||||
cms/djangoapps/*/features/*
|
||||
lms/envs/*
|
||||
lms/djangoapps/*/migrations/*
|
||||
lms/djangoapps/*/features/*
|
||||
common/djangoapps/terrain/*
|
||||
common/djangoapps/*/migrations/*
|
||||
openedx/core/djangoapps/*/migrations/*
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
||||
|
||||
exclude_lines =
|
||||
pragma: no cover
|
||||
raise NotImplementedError
|
||||
|
||||
[html]
|
||||
title = edx-platform Python Test Coverage Report
|
||||
directory = reports/cover
|
||||
|
||||
[xml]
|
||||
output = reports/coverage.xml
|
||||
|
||||
[paths]
|
||||
jenkins_source =
|
||||
/home/jenkins/workspace/edx-platform-unit-coverage
|
||||
/home/jenkins/workspace/edx-platform-test-subset
|
||||
|
||||
devstack_source =
|
||||
/edx/app/edxapp/edx-platform
|
||||
@@ -1,22 +0,0 @@
|
||||
# .coveragerc for cms
|
||||
[run]
|
||||
data_file = reports/cms/.coverage
|
||||
source = cms,common/djangoapps,openedx/core/djangoapps
|
||||
omit =
|
||||
cms/envs/*
|
||||
cms/manage.py
|
||||
common/djangoapps/terrain/*
|
||||
common/djangoapps/*/migrations/*
|
||||
openedx/core/djangoapps/*/migrations/*
|
||||
cms/djangoapps/*/migrations/*
|
||||
cms/djangoapps/*/features/*
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
||||
|
||||
[html]
|
||||
title = CMS Python Test Coverage Report
|
||||
directory = reports/cms/cover
|
||||
|
||||
[xml]
|
||||
output = reports/cms/coverage.xml
|
||||
@@ -1,15 +0,0 @@
|
||||
# .coveragerc for common/lib/calc
|
||||
[run]
|
||||
data_file = reports/common/lib/calc/.coverage
|
||||
source = common/lib/calc
|
||||
branch = true
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
||||
|
||||
[html]
|
||||
title = Calc Python Test Coverage Report
|
||||
directory = reports/common/lib/calc/cover
|
||||
|
||||
[xml]
|
||||
output = reports/common/lib/calc/coverage.xml
|
||||
@@ -1,14 +0,0 @@
|
||||
# .coveragerc for common/lib/capa
|
||||
[run]
|
||||
data_file = reports/common/lib/capa/.coverage
|
||||
source = common/lib/capa
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
||||
|
||||
[html]
|
||||
title = Capa Python Test Coverage Report
|
||||
directory = reports/common/lib/capa/cover
|
||||
|
||||
[xml]
|
||||
output = reports/common/lib/capa/coverage.xml
|
||||
@@ -1,17 +0,0 @@
|
||||
# .coveragerc for common/lib/xmodule
|
||||
[run]
|
||||
data_file = reports/common/lib/xmodule/.coverage
|
||||
source = common/lib/xmodule
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
||||
exclude_lines =
|
||||
pragma: no cover
|
||||
raise NotImplementedError
|
||||
|
||||
[html]
|
||||
title = XModule Python Test Coverage Report
|
||||
directory = reports/common/lib/xmodule/cover
|
||||
|
||||
[xml]
|
||||
output = reports/common/lib/xmodule/coverage.xml
|
||||
@@ -1,21 +0,0 @@
|
||||
# .coveragerc for lms
|
||||
[run]
|
||||
data_file = reports/lms/.coverage
|
||||
source = lms,common/djangoapps,openedx/core/djangoapps
|
||||
omit =
|
||||
lms/envs/*
|
||||
common/djangoapps/terrain/*
|
||||
common/djangoapps/*/migrations/*
|
||||
openedx/core/djangoapps/*/migrations/*
|
||||
lms/djangoapps/*/migrations/*
|
||||
lms/djangoapps/*/features/*
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
||||
|
||||
[html]
|
||||
title = LMS Python Test Coverage Report
|
||||
directory = reports/lms/cover
|
||||
|
||||
[xml]
|
||||
output = reports/lms/coverage.xml
|
||||
@@ -196,44 +196,33 @@ def coverage(options):
|
||||
"""
|
||||
compare_branch = getattr(options, 'compare_branch', 'origin/master')
|
||||
|
||||
for directory in Env.LIB_TEST_DIRS + ['cms', 'lms']:
|
||||
report_dir = Env.REPORT_DIR / directory
|
||||
report_dir = Env.REPORT_DIR
|
||||
rcfile = Env.PYTHON_COVERAGERC
|
||||
|
||||
if (report_dir / '.coverage').isfile():
|
||||
# Generate the coverage.py HTML report
|
||||
sh("coverage html --rcfile={dir}/.coveragerc".format(dir=directory))
|
||||
if not (report_dir / '.coverage').isfile():
|
||||
# This may be that the coverage files were generated using -p,
|
||||
# try to combine them to the one file that we need.
|
||||
sh("coverage combine --rcfile={}".format(rcfile))
|
||||
|
||||
# Generate the coverage.py XML report
|
||||
sh("coverage xml -o {report_dir}/coverage.xml --rcfile={dir}/.coveragerc".format(
|
||||
report_dir=report_dir,
|
||||
dir=directory
|
||||
))
|
||||
if not os.path.getsize(report_dir / '.coverage') > 50:
|
||||
# Check if the .coverage data file is larger than the base file,
|
||||
# because coverage combine will always at least make the "empty" data
|
||||
# file even when there isn't any data to be combined.
|
||||
err_msg = colorize(
|
||||
'red',
|
||||
"No coverage info found. Run `paver test` before running "
|
||||
"`paver coverage`.\n"
|
||||
)
|
||||
sys.stderr.write(err_msg)
|
||||
return
|
||||
|
||||
# Generate the coverage.py XML report
|
||||
sh("coverage xml --rcfile={}".format(rcfile))
|
||||
# Generate the coverage.py HTML report
|
||||
sh("coverage html --rcfile={}".format(rcfile))
|
||||
call_task('diff_coverage', options=dict(options))
|
||||
|
||||
|
||||
@no_help
|
||||
@task
|
||||
@needs('pavelib.prereqs.install_prereqs')
|
||||
def combine_jenkins_coverage():
|
||||
"""
|
||||
Combine coverage reports from jenkins build flow.
|
||||
"""
|
||||
coveragerc = Env.REPO_ROOT / 'test_root' / '.jenkins-coveragerc'
|
||||
|
||||
for directory in Env.LIB_TEST_DIRS + ['cms', 'lms']:
|
||||
report_dir = Env.REPORT_DIR / directory
|
||||
|
||||
# Only try to combine the coverage if we've run the tests.
|
||||
if report_dir.isdir():
|
||||
sh(
|
||||
"cd {} && coverage combine --rcfile={}".format(
|
||||
report_dir,
|
||||
coveragerc,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@task
|
||||
@needs('pavelib.prereqs.install_prereqs')
|
||||
@cmdopts([
|
||||
@@ -255,7 +244,8 @@ def diff_coverage(options):
|
||||
if not xml_reports:
|
||||
err_msg = colorize(
|
||||
'red',
|
||||
"No coverage info found. Run `paver test` before running `paver coverage`.\n"
|
||||
"No coverage info found. Run `paver test` before running "
|
||||
"`paver coverage`.\n"
|
||||
)
|
||||
sys.stderr.write(err_msg)
|
||||
else:
|
||||
|
||||
@@ -22,6 +22,9 @@ class Env(object):
|
||||
REPORT_DIR = REPO_ROOT / 'reports'
|
||||
METRICS_DIR = REPORT_DIR / 'metrics'
|
||||
|
||||
# Python unittest dirs
|
||||
PYTHON_COVERAGERC = REPO_ROOT / ".coveragerc"
|
||||
|
||||
# Bok_choy dirs
|
||||
BOK_CHOY_DIR = REPO_ROOT / "common" / "test" / "acceptance"
|
||||
BOK_CHOY_LOG_DIR = REPO_ROOT / "test_root" / "log"
|
||||
|
||||
@@ -63,10 +63,10 @@ class NoseTestSuite(TestSuite):
|
||||
cmd0 = "`which {}`".format(cmd0)
|
||||
|
||||
cmd = (
|
||||
"python -m coverage run {cov_args} --rcfile={root}/.coveragerc "
|
||||
"python -m coverage run {cov_args} --rcfile={rcfile} "
|
||||
"{cmd0} {cmd_rest}".format(
|
||||
cov_args=self.cov_args,
|
||||
root=self.root,
|
||||
rcfile=Env.PYTHON_COVERAGERC,
|
||||
cmd0=cmd0,
|
||||
cmd_rest=cmd_rest,
|
||||
)
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
source scripts/jenkins-common.sh
|
||||
|
||||
# Combine the data files that were generated using -p
|
||||
paver combine_jenkins_coverage
|
||||
|
||||
# Get the diff coverage and html reports for unit tests
|
||||
NO_PREREQ_INSTALL=true paver coverage
|
||||
paver coverage
|
||||
|
||||
# Get coverage reports for bok choy
|
||||
# paver bokchoy_coverage
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
[paths]
|
||||
build_jenkins_source =
|
||||
/home/jenkins/workspace/edx-platform-unit-coverage
|
||||
/home/jenkins/workspace/edx-platform-test-subset
|
||||
|
||||
test_jenkins_source =
|
||||
/home/jenkins/workspace/test-edx-platform-unit-coverage
|
||||
/home/jenkins/workspace/*test-edx-platform-test-subset
|
||||
Reference in New Issue
Block a user