Skip to content

Commit c72b10a

Browse files
committed
Revisit coverage reporting: use coveragepy directly
1 parent d57e0a0 commit c72b10a

File tree

3 files changed

+36
-44
lines changed

3 files changed

+36
-44
lines changed

.coveragerc

+5-3
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

+19-33
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,42 @@ jobs:
88
# py37 is not available in trusty dist, and requires sudo=true with xenial.
99
- stage: test
1010
python: 3.7
11-
env: TOXENV=py37-dj21-sqlite
11+
env: TOXENV=py37-dj21-sqlite-coverage
1212
dist: xenial
1313
sudo: true
1414

1515
- python: 3.6
16-
env: TOXENV=py36-djmaster-sqlite
16+
env: TOXENV=py36-djmaster-sqlite-coverage
1717
- python: 3.6
18-
env: TOXENV=py36-dj20-postgres
18+
env: TOXENV=py36-dj20-postgres-coverage
1919
- python: 3.6
20-
env: TOXENV=py36-dj111-sqlite
20+
env: TOXENV=py36-dj111-sqlite-coverage
2121

2222
- python: 3.5
23-
env: TOXENV=py35-dj110-postgres
23+
env: TOXENV=py35-dj110-postgres-coverage
2424

2525
- python: 3.4
26-
env: TOXENV=py34-dj19-sqlite_file
26+
env: TOXENV=py34-dj19-sqlite_file-coverage
2727

2828
- python: 2.7
29-
env: TOXENV=py27-dj111-mysql_innodb
29+
env: TOXENV=py27-dj111-mysql_innodb-coverage
3030
- python: 2.7
31-
env: TOXENV=py27-dj111-mysql_myisam
31+
env: TOXENV=py27-dj111-mysql_myisam-coverage
3232
- python: 2.7
33-
env: TOXENV=py27-dj18-postgres
33+
env: TOXENV=py27-dj18-postgres-coverage
3434

3535
# pypy/pypy3: not included with coverage reports (much slower then).
3636
- python: pypy
37-
env: TOXENV=pypy-dj111-sqlite_file SKIP_COVERAGE=1
37+
env: TOXENV=pypy-dj111-sqlite_file
3838
- python: pypy3
39-
env: TOXENV=pypy3-dj110-sqlite SKIP_COVERAGE=1
39+
env: TOXENV=pypy3-dj110-sqlite
4040

4141
- python: 3.6
42-
env: TOXENV=checkqa,docs SKIP_COVERAGE=1
42+
env: TOXENV=checkqa,docs
4343

4444
- stage: test_release
4545
python: 3.6
46-
env: TOXENV=py36-dj20-postgres SKIP_COVERAGE=1
46+
env: TOXENV=py36-dj20-postgres
4747

4848
- stage: release
4949
script: skip
@@ -61,43 +61,29 @@ jobs:
6161
# NOTE: does not show up in "allowed failures" section, but is allowed to
6262
# fail (for the "test" stage).
6363
allow_failures:
64-
- env: TOXENV=py36-djmaster-sqlite
64+
- env: TOXENV=py36-djmaster-sqlite-coverage
6565

6666
stages:
6767
- name: test
6868
if: tag IS NOT present
69+
6970
- name: test_release
7071
if: tag IS present
7172
- name: release
7273
if: tag IS present
7374

7475
install:
7576
- 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
8577

8678
script:
8779
- tox
8880

8981
after_success:
9082
- |
9183
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
84+
if [[ "${TOXENV%-coverage}" != "$TOXENV" ]]; then
85+
codecov_flags=${TOXENV%-coverage}
86+
codecov_flags=${codecov_flags//-/,}
87+
bash <(curl -s https://codecov.io/bash) -Z -X gcov -X xcode -X gcovout -F "$codecov_flags"
10288
fi
10389
set +x

tox.ini

+12-8
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)