Skip to content

Commit 5000ff8

Browse files
authored
Merge pull request #657 from blueyed/revisit-coverage
Revisit coverage reporting: use coveragepy directly
2 parents d57e0a0 + b2c91c6 commit 5000ff8

File tree

3 files changed

+44
-50
lines changed

3 files changed

+44
-50
lines changed

.coveragerc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
[run]
2-
parallel = true
3-
source = .
4-
branch = true
2+
parallel = 1
3+
source = ${PYTESTDJANGO_COVERAGE_SRC}.
4+
branch = 1
5+
56
[report]
67
include = pytest_django/*,pytest_django_test/*,tests/*
8+
skip_covered = 1

.travis.yml

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,46 @@ dist: trusty
55
jobs:
66
fast_finish: true
77
include:
8-
# py37 is not available in trusty dist, and requires sudo=true with xenial.
8+
- stage: baseline
9+
python: 3.6
10+
env: TOXENV=py36-dj20-postgres-coverage
11+
- python: 3.6
12+
env: TOXENV=py36-dj111-sqlite-coverage
13+
- python: 2.7
14+
env: TOXENV=py27-dj111-mysql_innodb-coverage
15+
- python: 3.6
16+
env: TOXENV=checkqa,docs
17+
918
- stage: test
19+
# py37 is not available in trusty dist, and requires sudo=true with xenial.
1020
python: 3.7
11-
env: TOXENV=py37-dj21-sqlite
21+
env: TOXENV=py37-dj21-sqlite-coverage
1222
dist: xenial
1323
sudo: true
1424

1525
- python: 3.6
16-
env: TOXENV=py36-djmaster-sqlite
17-
- python: 3.6
18-
env: TOXENV=py36-dj20-postgres
19-
- python: 3.6
20-
env: TOXENV=py36-dj111-sqlite
26+
env: TOXENV=py36-djmaster-sqlite-coverage
2127

2228
- python: 3.5
23-
env: TOXENV=py35-dj110-postgres
29+
env: TOXENV=py35-dj110-postgres-coverage
2430

2531
- python: 3.4
26-
env: TOXENV=py34-dj19-sqlite_file
32+
env: TOXENV=py34-dj19-sqlite_file-coverage
2733

2834
- python: 2.7
29-
env: TOXENV=py27-dj111-mysql_innodb
30-
- python: 2.7
31-
env: TOXENV=py27-dj111-mysql_myisam
35+
env: TOXENV=py27-dj111-mysql_myisam-coverage
3236
- python: 2.7
33-
env: TOXENV=py27-dj18-postgres
37+
env: TOXENV=py27-dj18-postgres-coverage
3438

3539
# pypy/pypy3: not included with coverage reports (much slower then).
3640
- python: pypy
37-
env: TOXENV=pypy-dj111-sqlite_file SKIP_COVERAGE=1
41+
env: TOXENV=pypy-dj111-sqlite_file
3842
- python: pypy3
39-
env: TOXENV=pypy3-dj110-sqlite SKIP_COVERAGE=1
40-
41-
- python: 3.6
42-
env: TOXENV=checkqa,docs SKIP_COVERAGE=1
43+
env: TOXENV=pypy3-dj110-sqlite
4344

4445
- stage: test_release
4546
python: 3.6
46-
env: TOXENV=py36-dj20-postgres SKIP_COVERAGE=1
47+
env: TOXENV=py36-dj20-postgres
4748

4849
- stage: release
4950
script: skip
@@ -61,9 +62,11 @@ jobs:
6162
# NOTE: does not show up in "allowed failures" section, but is allowed to
6263
# fail (for the "test" stage).
6364
allow_failures:
64-
- env: TOXENV=py36-djmaster-sqlite
65+
- env: TOXENV=py36-djmaster-sqlite-coverage
6566

6667
stages:
68+
- name: baseline
69+
if: tag IS NOT present
6770
- name: test
6871
if: tag IS NOT present
6972
- name: test_release
@@ -73,31 +76,16 @@ stages:
7376

7477
install:
7578
- pip install tox==3.3.0
76-
- |
77-
# Setup coverage tracking.
78-
if [[ "$SKIP_COVERAGE" != "1" ]]; then
79-
PYTEST_DJANGO_COVERAGE=1
80-
export PYTEST_ADDOPTS='--cov=pytest_django --cov=tests --cov=pytest_django_test --cov-report=term-missing:skip-covered'
81-
export _PYTESTDJANGO_TOX_EXTRA_DEPS='pytest-cov==2.5.1'
82-
else
83-
PYTEST_DJANGO_COVERAGE=0
84-
fi
8579

8680
script:
8781
- tox
8882

8983
after_success:
9084
- |
9185
set -ex
92-
if [[ "$PYTEST_DJANGO_COVERAGE" = 1 ]]; then
93-
pip install codecov
94-
95-
coverage --version
96-
coverage combine
97-
coverage xml
98-
99-
codecov_flags=${TOXENV//./}
100-
codecov_flags=${codecov_flags//-/ }
101-
codecov --required -X search gcov pycov -f coverage.xml --flags $codecov_flags
86+
if [[ "${TOXENV%-coverage}" != "$TOXENV" ]]; then
87+
codecov_flags=${TOXENV%-coverage}
88+
codecov_flags=${codecov_flags//-/,}
89+
bash <(curl -s https://codecov.io/bash) -Z -X gcov -X xcode -X gcovout -F "$codecov_flags"
10290
fi
10391
set +x

tox.ini

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ envlist =
99
[testenv]
1010
extras = testing
1111
deps =
12-
{env:_PYTESTDJANGO_TOX_EXTRA_DEPS:}
13-
1412
djmaster: https://github.com/django/django/archive/master.tar.gz
1513
dj21: Django>=2.1a1,<2.2
1614
dj20: Django>=2.0a1,<2.1
@@ -23,24 +21,30 @@ deps =
2321
mysql_innodb: mysql-python==1.2.5
2422

2523
postgres: psycopg2-binary
24+
coverage: coverage-enable-subprocess
25+
2626
setenv =
2727
PYTHONPATH = {toxinidir}:{env:PYTHONPATH:}
2828

29-
# Ref: https://github.com/pytest-dev/pytest-django/pull/412#issuecomment-340077539
30-
COV_CORE_SOURCE={toxinidir}
31-
COV_CORE_CONFIG={toxinidir}/.coveragerc
32-
COV_CORE_DATAFILE={toxinidir}/.coverage.eager
33-
3429
mysql_innodb: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql_innodb
3530
mysql_myisam: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql_myisam
3631
postgres: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_postgres
3732
sqlite: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite
3833
sqlite_file: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite_file
3934

35+
coverage: PYTESTDJANGO_TEST_RUNNER=coverage run -m pytest
36+
coverage: COVERAGE_PROCESS_START={toxinidir}/.coveragerc
37+
coverage: COVERAGE_FILE={toxinidir}/.coverage
38+
coverage: PYTESTDJANGO_COVERAGE_SRC={toxinidir}/
39+
4040
passenv = PYTEST_ADDOPTS
4141
usedevelop = True
4242
commands =
43-
pytest --strict {posargs:tests}
43+
coverage: coverage erase
44+
{env:PYTESTDJANGO_TEST_RUNNER:pytest} {posargs:tests}
45+
coverage: coverage combine
46+
coverage: coverage report
47+
coverage: coverage xml
4448

4549
[testenv:checkqa]
4650
deps =

0 commit comments

Comments
 (0)