summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 442a2761f58a25972cb03218d4486d6b82f7740b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
language: python
dist: xenial
stages:
- baseline
- name: test
  if: repo = pytest-dev/pytest AND tag IS NOT present
- name: deploy
  if: repo = pytest-dev/pytest AND tag IS present
python: '3.7'
cache: false

env:
  global:
    - PYTEST_ADDOPTS=-vv

install:
  - python -m pip install --upgrade --pre tox

jobs:
  include:
    # OSX tests - first (in test stage), since they are the slower ones.
    - &test-macos
      # NOTE: (tests with) pexpect appear to be buggy on Travis,
      #       at least with coverage.
      #       Log: https://travis-ci.org/pytest-dev/pytest/jobs/500358864
      os: osx
      osx_image: xcode10.1
      language: generic
      # Coverage for:
      # - py2 with symlink in test_cmdline_python_package_symlink.
      env: TOXENV=py27-xdist PYTEST_COVERAGE=1
      before_install:
        - python -V
        - test $(python -c 'import sys; print("%d%d" % sys.version_info[0:2])') = 27
    - <<: *test-macos
      env: TOXENV=py37-xdist
      before_install:
        - which python3
        - python3 -V
        - ln -sfn "$(which python3)" /usr/local/bin/python
        - python -V
        - test $(python -c 'import sys; print("%d%d" % sys.version_info[0:2])') = 37

    # Full run of latest (major) supported versions, without xdist.
    - env: TOXENV=py27
      python: '2.7'
    - env: TOXENV=py37
      python: '3.7'

    # Coverage tracking is slow with pypy, skip it.
    - env: TOXENV=pypy-xdist
      python: 'pypy'
    - env: TOXENV=pypy3-xdist
      python: 'pypy3'

    - env: TOXENV=py34-xdist
      python: '3.4'
    - env: TOXENV=py35-xdist
      python: '3.5'

    # Coverage for:
    # - pytester's LsofFdLeakChecker
    # - TestArgComplete (linux only)
    # - numpy
    # Empty PYTEST_ADDOPTS to run this non-verbose.
    - env: TOXENV=py37-lsof-numpy-xdist PYTEST_COVERAGE=1 PYTEST_ADDOPTS=

    # Specialized factors for py27.
    - env: TOXENV=py27-nobyte-numpy-xdist
      python: '2.7'
    - env: TOXENV=py27-pluggymaster-xdist
      python: '2.7'

    # Specialized factors for py37.
    # Coverage for:
    # - test_sys_breakpoint_interception (via pexpect).
    - env: TOXENV=py37-pexpect,py37-twisted PYTEST_COVERAGE=1
    - env: TOXENV=py37-pluggymaster-xdist
    - env: TOXENV=py37-freeze

    # Jobs only run via Travis cron jobs (currently daily).
    - env: TOXENV=py38-xdist
      python: '3.8-dev'
      if: type = cron

    - stage: baseline
    # Coverage for:
    # - _pytest.unittest._handle_skip (via pexpect).
      env: TOXENV=py27-pexpect,py27-twisted PYTEST_COVERAGE=1
      python: '2.7'
    # Use py36 here for faster baseline.
    - env: TOXENV=py36-xdist
      python: '3.6'
    - env: TOXENV=linting,docs,doctesting PYTEST_COVERAGE=1
      cache:
        directories:
          - $HOME/.cache/pre-commit

    - stage: deploy
      python: '3.6'
      install: pip install -U setuptools setuptools_scm
      script: skip
      deploy:
        provider: pypi
        user: nicoddemus
        distributions: sdist bdist_wheel
        skip_upload_docs: true
        password:
          secure: xanTgTUu6XDQVqB/0bwJQXoDMnU5tkwZc5koz6mBkkqZhKdNOi2CLoC1XhiSZ+ah24l4V1E0GAqY5kBBcy9d7NVe4WNg4tD095LsHw+CRU6/HCVIFfyk2IZ+FPAlguesCcUiJSXOrlBF+Wj68wEvLoK7EoRFbJeiZ/f91Ww1sbtDlqXABWGHrmhPJL5Wva7o7+wG7JwJowqdZg1pbQExsCc7b53w4v2RBu3D6TJaTAzHiVsW+nUSI67vKI/uf+cR/OixsTfy37wlHgSwihYmrYLFls3V0bSpahCim3bCgMaFZx8S8xrdgJ++PzBCof2HeflFKvW+VCkoYzGEG4NrTWJoNz6ni4red9GdvfjGH3YCjAKS56h9x58zp2E5rpsb/kVq5/45xzV+dq6JRuhQ1nJWjBC6fSKAc/bfwnuFK3EBxNLkvBssLHvsNjj5XG++cB8DdS9wVGUqjpoK4puaXUWFqy4q3S9F86HEsKNgExtieA9qNx+pCIZVs6JCXZNjr0I5eVNzqJIyggNgJG6RyravsU35t9Zd9doL5g4Y7UKmAGTn1Sz24HQ4sMQgXdm2SyD8gEK5je4tlhUvfGtDvMSlstq71kIn9nRpFnqB6MFlbYSEAZmo8dGbCquoUc++6Rum208wcVbrzzVtGlXB/Ow9AbFMYeAGA0+N/K1e59c=
        on:
          tags: true
          repo: pytest-dev/pytest

matrix:
  allow_failures:
    - python: '3.8-dev'
      env: TOXENV=py38-xdist
    # Temporary (https://github.com/pytest-dev/pytest/pull/5334).
    - env: TOXENV=pypy3-xdist
      python: 'pypy3'

before_script:
  - |
    # Do not (re-)upload coverage with cron runs.
    if [[ "$TRAVIS_EVENT_TYPE" = cron ]]; then
      PYTEST_COVERAGE=0
    fi
  - |
    if [[ "$PYTEST_COVERAGE" = 1 ]]; then
      export COVERAGE_FILE="$PWD/.coverage"
      export COVERAGE_PROCESS_START="$PWD/.coveragerc"
      export _PYTEST_TOX_COVERAGE_RUN="coverage run -m"
      export _PYTEST_TOX_EXTRA_DEP=coverage-enable-subprocess
    fi

script: tox --recreate

after_success:
  - |
    if [[ "$PYTEST_COVERAGE" = 1 ]]; then
      set -e
      # Add last TOXENV to $PATH.
      PATH="$PWD/.tox/${TOXENV##*,}/bin:$PATH"
      coverage combine
      coverage xml
      coverage report -m
      bash <(curl -s https://codecov.io/bash) -Z -X gcov -X coveragepy -X search -X xcode -X gcovout -X fix -f coverage.xml -n $TOXENV-$TRAVIS_OS_NAME
    fi

notifications:
  irc:
    channels:
      - "chat.freenode.net#pytest"
    on_success: change
    on_failure: change
    skip_join: true
  email:
    - pytest-commit@python.org