Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
[run]
parallel = true
source = .
branch = true
parallel = 1
source = ${PYTESTDJANGO_COVERAGE_SRC}.
branch = 1

[report]
include = pytest_django/*,pytest_django_test/*,tests/*
skip_covered = 1
66 changes: 27 additions & 39 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,46 @@ dist: trusty
jobs:
fast_finish: true
include:
# py37 is not available in trusty dist, and requires sudo=true with xenial.
- stage: baseline
python: 3.6
env: TOXENV=py36-dj20-postgres-coverage
- python: 3.6
env: TOXENV=py36-dj111-sqlite-coverage
- python: 2.7
env: TOXENV=py27-dj111-mysql_innodb-coverage
- python: 3.6
env: TOXENV=checkqa,docs

- stage: test
# py37 is not available in trusty dist, and requires sudo=true with xenial.
python: 3.7
env: TOXENV=py37-dj21-sqlite
env: TOXENV=py37-dj21-sqlite-coverage
dist: xenial
sudo: true

- python: 3.6
env: TOXENV=py36-djmaster-sqlite
- python: 3.6
env: TOXENV=py36-dj20-postgres
- python: 3.6
env: TOXENV=py36-dj111-sqlite
env: TOXENV=py36-djmaster-sqlite-coverage

- python: 3.5
env: TOXENV=py35-dj110-postgres
env: TOXENV=py35-dj110-postgres-coverage

- python: 3.4
env: TOXENV=py34-dj19-sqlite_file
env: TOXENV=py34-dj19-sqlite_file-coverage

- python: 2.7
env: TOXENV=py27-dj111-mysql_innodb
- python: 2.7
env: TOXENV=py27-dj111-mysql_myisam
env: TOXENV=py27-dj111-mysql_myisam-coverage
- python: 2.7
env: TOXENV=py27-dj18-postgres
env: TOXENV=py27-dj18-postgres-coverage

# pypy/pypy3: not included with coverage reports (much slower then).
- python: pypy
env: TOXENV=pypy-dj111-sqlite_file SKIP_COVERAGE=1
env: TOXENV=pypy-dj111-sqlite_file
- python: pypy3
env: TOXENV=pypy3-dj110-sqlite SKIP_COVERAGE=1

- python: 3.6
env: TOXENV=checkqa,docs SKIP_COVERAGE=1
env: TOXENV=pypy3-dj110-sqlite

- stage: test_release
python: 3.6
env: TOXENV=py36-dj20-postgres SKIP_COVERAGE=1
env: TOXENV=py36-dj20-postgres

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

stages:
- name: baseline
if: tag IS NOT present
- name: test
if: tag IS NOT present
- name: test_release
Expand All @@ -73,31 +76,16 @@ stages:

install:
- pip install tox==3.3.0
- |
# Setup coverage tracking.
if [[ "$SKIP_COVERAGE" != "1" ]]; then
PYTEST_DJANGO_COVERAGE=1
export PYTEST_ADDOPTS='--cov=pytest_django --cov=tests --cov=pytest_django_test --cov-report=term-missing:skip-covered'
export _PYTESTDJANGO_TOX_EXTRA_DEPS='pytest-cov==2.5.1'
else
PYTEST_DJANGO_COVERAGE=0
fi

script:
- tox

after_success:
- |
set -ex
if [[ "$PYTEST_DJANGO_COVERAGE" = 1 ]]; then
pip install codecov

coverage --version
coverage combine
coverage xml

codecov_flags=${TOXENV//./}
codecov_flags=${codecov_flags//-/ }
codecov --required -X search gcov pycov -f coverage.xml --flags $codecov_flags
if [[ "${TOXENV%-coverage}" != "$TOXENV" ]]; then
codecov_flags=${TOXENV%-coverage}
codecov_flags=${codecov_flags//-/,}
bash <(curl -s https://codecov.io/bash) -Z -X gcov -X xcode -X gcovout -F "$codecov_flags"
fi
set +x
20 changes: 12 additions & 8 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ envlist =
[testenv]
extras = testing
deps =
{env:_PYTESTDJANGO_TOX_EXTRA_DEPS:}

djmaster: https://github.com/django/django/archive/master.tar.gz
dj21: Django>=2.1a1,<2.2
dj20: Django>=2.0a1,<2.1
Expand All @@ -23,24 +21,30 @@ deps =
mysql_innodb: mysql-python==1.2.5

postgres: psycopg2-binary
coverage: coverage-enable-subprocess

setenv =
PYTHONPATH = {toxinidir}:{env:PYTHONPATH:}

# Ref: https://github.com/pytest-dev/pytest-django/pull/412#issuecomment-340077539
COV_CORE_SOURCE={toxinidir}
COV_CORE_CONFIG={toxinidir}/.coveragerc
COV_CORE_DATAFILE={toxinidir}/.coverage.eager

mysql_innodb: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql_innodb
mysql_myisam: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql_myisam
postgres: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_postgres
sqlite: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite
sqlite_file: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite_file

coverage: PYTESTDJANGO_TEST_RUNNER=coverage run -m pytest
coverage: COVERAGE_PROCESS_START={toxinidir}/.coveragerc
coverage: COVERAGE_FILE={toxinidir}/.coverage
coverage: PYTESTDJANGO_COVERAGE_SRC={toxinidir}/

passenv = PYTEST_ADDOPTS
usedevelop = True
commands =
pytest --strict {posargs:tests}
coverage: coverage erase
{env:PYTESTDJANGO_TEST_RUNNER:pytest} {posargs:tests}
coverage: coverage combine
coverage: coverage report
coverage: coverage xml

[testenv:checkqa]
deps =
Expand Down