Skip to content

Commit 27ca6cf

Browse files
committed
Fix CI config and coverage report
1 parent f606fef commit 27ca6cf

File tree

5 files changed

+289
-120
lines changed

5 files changed

+289
-120
lines changed

.github/workflows/main.yml

+203
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
# evaluating GitHub actions for CI, disregard failures when evaluating PRs
2+
#
3+
# this is still missing:
4+
# - deploy
5+
# - upload github notes
6+
#
7+
name: main
8+
9+
on:
10+
push:
11+
branches:
12+
- 4.6.x
13+
tags:
14+
- "*"
15+
16+
pull_request:
17+
branches:
18+
- 4.6.x
19+
20+
jobs:
21+
build:
22+
runs-on: ${{ matrix.os }}
23+
24+
strategy:
25+
fail-fast: false
26+
matrix:
27+
name: [
28+
"windows-py27",
29+
"windows-py35",
30+
"windows-py36",
31+
"windows-py37",
32+
"windows-py37-pluggy",
33+
"windows-py38",
34+
35+
"ubuntu-py27-pluggy",
36+
"ubuntu-py27-nobyte",
37+
"ubuntu-py27-pexpect-py37-twisted",
38+
"ubuntu-py37",
39+
"ubuntu-py37-pluggy",
40+
"ubuntu-py37-pexpect-py37-twisted",
41+
"ubuntu-py37-freeze",
42+
"ubuntu-pypy",
43+
"ubuntu-pypy3",
44+
45+
"macos-py27",
46+
"macos-py38",
47+
48+
]
49+
50+
include:
51+
# Windows jobs
52+
- name: "windows-py27"
53+
python: "2.7"
54+
os: windows-latest
55+
tox_env: "py27-xdist"
56+
use_coverage: true
57+
- name: "windows-py35"
58+
python: "3.5"
59+
os: windows-latest
60+
tox_env: "py35-xdist"
61+
use_coverage: true
62+
- name: "windows-py36"
63+
python: "3.6"
64+
os: windows-latest
65+
tox_env: "py36-xdist"
66+
use_coverage: true
67+
- name: "windows-py37"
68+
python: "3.7"
69+
os: windows-latest
70+
tox_env: "py37-twisted-numpy"
71+
use_coverage: true
72+
- name: "windows-py37-pluggy"
73+
python: "3.7"
74+
os: windows-latest
75+
tox_env: "py37-pluggymaster-xdist"
76+
use_coverage: true
77+
- name: "windows-py38"
78+
python: "3.8"
79+
os: windows-latest
80+
tox_env: "py38-xdist"
81+
use_coverage: true
82+
83+
# Ubuntu jobs – find the rest of them in .travis.yml
84+
- name: "ubuntu-py27-pluggy"
85+
python: "2.7"
86+
os: ubuntu-latest
87+
tox_env: "py27-pluggymaster-xdist"
88+
use_coverage: true
89+
- name: "ubuntu-py27-nobyte"
90+
python: "2.7"
91+
os: ubuntu-latest
92+
tox_env: "py27-nobyte-numpy-xdist"
93+
use_coverage: true
94+
- name: "ubuntu-py27-pexpect-py37-twisted"
95+
python: "3.7"
96+
os: ubuntu-latest
97+
tox_env: "py27-pexpect,py27-twisted"
98+
use_coverage: true
99+
- name: "ubuntu-py37"
100+
python: "3.7"
101+
os: ubuntu-latest
102+
tox_env: "py37-lsof-numpy-xdist"
103+
use_coverage: true
104+
- name: "ubuntu-py37-pluggy"
105+
python: "3.7"
106+
os: ubuntu-latest
107+
tox_env: "py37-pluggymaster-xdist"
108+
use_coverage: true
109+
- name: "ubuntu-py37-pexpect-py37-twisted"
110+
python: "3.7"
111+
os: ubuntu-latest
112+
tox_env: "py37-pexpect,py37-twisted"
113+
use_coverage: true
114+
- name: "ubuntu-py37-freeze"
115+
python: "3.7"
116+
os: ubuntu-latest
117+
tox_env: "py37-freeze"
118+
- name: "ubuntu-pypy"
119+
python: "pypy2"
120+
os: ubuntu-latest
121+
tox_env: "pypy-xdist"
122+
use_coverage: true
123+
- name: "ubuntu-pypy3"
124+
python: "pypy3"
125+
os: ubuntu-latest
126+
tox_env: "pypy3-xdist"
127+
use_coverage: true
128+
129+
# MacOS jobs
130+
- name: "macos-py27"
131+
python: "2.7"
132+
os: macos-latest
133+
tox_env: "py27-xdist"
134+
use_coverage: true
135+
- name: "macos-py38"
136+
python: "3.8"
137+
os: macos-latest
138+
tox_env: "py38-xdist"
139+
use_coverage: true
140+
141+
steps:
142+
- uses: actions/checkout@v1
143+
- name: Set up Python ${{ matrix.python }} on ${{ matrix.os }}
144+
uses: actions/setup-python@v1
145+
with:
146+
python-version: ${{ matrix.python }}
147+
- name: Install dependencies
148+
run: |
149+
python -m pip install --upgrade pip
150+
pip install tox coverage
151+
- name: Test without coverage
152+
if: "! matrix.use_coverage"
153+
run: "tox -e ${{ matrix.tox_env }}"
154+
155+
- name: Test with coverage
156+
if: "matrix.use_coverage"
157+
env:
158+
_PYTEST_TOX_COVERAGE_RUN: "coverage run -m"
159+
COVERAGE_PROCESS_START: ".coveragerc"
160+
_PYTEST_TOX_EXTRA_DEP: "coverage-enable-subprocess"
161+
run: "tox -vv -e ${{ matrix.tox_env }}"
162+
163+
- name: Prepare coverage token
164+
if: (matrix.use_coverage && ( github.repository == 'pytest-dev/pytest' || github.event_name == 'pull_request' ))
165+
run: |
166+
python scripts/append_codecov_token.py
167+
- name: Report coverage
168+
if: (matrix.use_coverage)
169+
env:
170+
CODECOV_NAME: ${{ matrix.name }}
171+
run: bash scripts/report-coverage.sh -F GHA,${{ runner.os }}
172+
173+
deploy:
174+
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') && github.repository == 'pytest-dev/pytest'
175+
176+
runs-on: ubuntu-latest
177+
178+
needs: [build]
179+
180+
steps:
181+
- uses: actions/checkout@v1
182+
- name: Set up Python
183+
uses: actions/setup-python@v1
184+
with:
185+
python-version: "3.7"
186+
- name: Install dependencies
187+
run: |
188+
python -m pip install --upgrade pip
189+
pip install --upgrade wheel setuptools tox
190+
- name: Build package
191+
run: |
192+
python setup.py sdist bdist_wheel
193+
- name: Publish package to PyPI
194+
uses: pypa/gh-action-pypi-publish@master
195+
with:
196+
user: __token__
197+
password: ${{ secrets.pypi_token }}
198+
- name: Publish GitHub release notes
199+
env:
200+
GH_RELEASE_NOTES_TOKEN: ${{ secrets.release_notes }}
201+
run: |
202+
sudo apt-get install pandoc
203+
tox -e publish-gh-release-notes

.travis.yml

+32-120
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
language: python
22
dist: xenial
3-
stages:
4-
- baseline
5-
- name: test
6-
if: repo = pytest-dev/pytest AND tag IS NOT present
7-
- name: deploy
8-
if: repo = pytest-dev/pytest AND tag IS present
9-
python: '3.7'
3+
python: '3.7.4'
104
cache: false
115

126
env:
137
global:
14-
- PYTEST_ADDOPTS=-vv
8+
- PYTEST_ADDOPTS="-vv --showlocals --durations=100 --exitfirst"
9+
- PYTEST_COVERAGE=1
1510

1611
# setuptools-scm needs all tags in order to obtain a proper version
1712
git:
@@ -22,113 +17,44 @@ install:
2217

2318
jobs:
2419
include:
25-
# OSX tests - first (in test stage), since they are the slower ones.
26-
- &test-macos
27-
os: osx
28-
osx_image: xcode10.1
29-
language: generic
30-
# Coverage for:
31-
# - py2 with symlink in test_cmdline_python_package_symlink.
32-
env: TOXENV=py27-xdist PYTEST_COVERAGE=1
33-
before_install:
34-
- python -V
35-
- test $(python -c 'import sys; print("%d%d" % sys.version_info[0:2])') = 27
36-
- <<: *test-macos
37-
env: TOXENV=py37-pexpect,py37-xdist PYTEST_COVERAGE=1
38-
before_install:
39-
- which python3
40-
- python3 -V
41-
- ln -sfn "$(which python3)" /usr/local/bin/python
42-
- python -V
43-
- test $(python -c 'import sys; print("%d%d" % sys.version_info[0:2])') = 37
44-
45-
# Full run of latest (major) supported versions, without xdist.
46-
- env: TOXENV=py27
20+
# Coverage for:
21+
# - TestArgComplete (linux only)
22+
# - numpy
23+
# - verbose=0
24+
- stage: baseline
25+
env: TOXENV=py27-xdist
4726
python: '2.7'
48-
- env: TOXENV=py37
49-
python: '3.7'
5027

51-
# Coverage tracking is slow with pypy, skip it.
52-
- env: TOXENV=pypy-xdist
53-
python: 'pypy'
54-
- env: TOXENV=pypy3-xdist
55-
python: 'pypy3'
28+
- env: TOXENV=py38-xdist
29+
python: '3.8'
30+
31+
- stage: tests
32+
# - _pytest.unittest._handle_skip (via pexpect).
33+
env: TOXENV=py27-pexpect,py27-twisted
34+
python: '2.7'
5635

57-
- env: TOXENV=py34-xdist
58-
python: '3.4'
5936
- env: TOXENV=py35-xdist
60-
python: '3.5'
37+
python: '3.5.9'
6138

62-
# Coverage for:
63-
# - pytester's LsofFdLeakChecker
64-
# - TestArgComplete (linux only)
65-
# - numpy
66-
# Empty PYTEST_ADDOPTS to run this non-verbose.
67-
- env: TOXENV=py37-lsof-numpy-xdist PYTEST_COVERAGE=1 PYTEST_ADDOPTS=
39+
- env: TOXENV=py36-xdist PYTEST_REORDER_TESTS=0
40+
python: '3.6.9'
6841

69-
# Specialized factors for py27.
70-
- env: TOXENV=py27-nobyte-numpy-xdist
71-
python: '2.7'
72-
- env: TOXENV=py27-pluggymaster-xdist
73-
python: '2.7'
42+
- env: TOXENV=py37-numpy-pexpect-twisted
43+
python: '3.7.4'
7444

75-
# Specialized factors for py37.
76-
# Coverage for:
7745
# - test_sys_breakpoint_interception (via pexpect).
78-
- env: TOXENV=py37-pexpect,py37-twisted PYTEST_COVERAGE=1
79-
- env: TOXENV=py37-pluggymaster-xdist
80-
- env: TOXENV=py37-freeze
46+
- env: TOXENV=py37-pexpect,py37-twisted
47+
python: '3.7.4'
8148

82-
# Jobs only run via Travis cron jobs (currently daily).
83-
- env: TOXENV=py38-xdist
84-
python: '3.8-dev'
85-
if: type = cron
49+
# Run also non-verbosely, to gain coverage
50+
- env: TOXENV=py38-xdist PYTEST_ADDOPTS=""
51+
python: '3.8'
8652

87-
- stage: baseline
88-
# Coverage for:
89-
# - _pytest.unittest._handle_skip (via pexpect).
90-
env: TOXENV=py27-pexpect,py27-twisted PYTEST_COVERAGE=1
91-
python: '2.7'
92-
# Use py36 here for faster baseline.
93-
- env: TOXENV=py36-xdist
94-
python: '3.6'
95-
- env: TOXENV=linting,docs,doctesting PYTEST_COVERAGE=1
53+
- env: TOXENV=linting,docs,doctesting
9654
cache:
9755
directories:
9856
- $HOME/.cache/pre-commit
9957

100-
- stage: deploy
101-
python: '3.6'
102-
install: pip install -U setuptools setuptools_scm tox
103-
script: skip
104-
# token to upload github release notes: GH_RELEASE_NOTES_TOKEN
105-
env:
106-
- secure: "OjOeL7/0JUDkV00SsTs732e8vQjHynpbG9FKTNtZZJ+1Zn4Cib+hAlwmlBnvVukML0X60YpcfjnC4quDOIGLPsh5zeXnvJmYtAIIUNQXjWz8NhcGYrhyzuP1rqV22U68RTCdmOq3lMYU/W2acwHP7T49PwJtOiUM5kF120UAQ0Zi5EmkqkIvH8oM5mO9Dlver+/U7Htpz9rhKrHBXQNCMZI6yj2aUyukqB2PN2fjAlDbCF//+FmvYw9NjT4GeFOSkTCf4ER9yfqs7yglRfwiLtOCZ2qKQhWZNsSJDB89rxIRXWavJUjJKeY2EW2/NkomYJDpqJLIF4JeFRw/HhA47CYPeo6BJqyyNV+0CovL1frpWfi9UQw2cMbgFUkUIUk3F6DD59PHNIOX2R/HX56dQsw7WKl3QuHlCOkICXYg8F7Ta684IoKjeTX03/6QNOkURfDBwfGszY0FpbxrjCSWKom6RyZdyidnESaxv9RzjcIRZVh1rp8KMrwS1OrwRSdG0zjlsPr49hWMenN/8fKgcHTV4/r1Tj6mip0dorSRCrgUNIeRBKgmui6FS8642ab5JNKOxMteVPVR2sFuhjOQ0Jy+PmvceYY9ZMWc3+/B/KVh0dZ3hwvLGZep/vxDS2PwCA5/xw31714vT5LxidKo8yECjBynMU/wUTTS695D3NY="
107-
addons:
108-
apt:
109-
packages:
110-
# required by publish_gh_release_notes
111-
- pandoc
112-
after_deploy: tox -e publish_gh_release_notes
113-
deploy:
114-
provider: pypi
115-
user: nicoddemus
116-
distributions: sdist bdist_wheel
117-
skip_upload_docs: true
118-
password:
119-
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=
120-
on:
121-
tags: true
122-
repo: pytest-dev/pytest
123-
124-
matrix:
125-
allow_failures:
126-
- python: '3.8-dev'
127-
env: TOXENV=py38-xdist
128-
# Temporary (https://github.com/pytest-dev/pytest/pull/5334).
129-
- env: TOXENV=pypy3-xdist
130-
python: 'pypy3'
131-
13258
before_script:
13359
- |
13460
# Do not (re-)upload coverage with cron runs.
@@ -142,27 +68,13 @@ before_script:
14268
export _PYTEST_TOX_COVERAGE_RUN="coverage run -m"
14369
export _PYTEST_TOX_EXTRA_DEP=coverage-enable-subprocess
14470
fi
145-
146-
script: tox
71+
script: env COLUMNS=120 python -m tox
14772

14873
after_success:
14974
- |
15075
if [[ "$PYTEST_COVERAGE" = 1 ]]; then
151-
set -e
152-
# Add last TOXENV to $PATH.
153-
PATH="$PWD/.tox/${TOXENV##*,}/bin:$PATH"
154-
coverage combine
155-
coverage xml
156-
coverage report -m
157-
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
76+
env CODECOV_NAME="$TOXENV-$TRAVIS_OS_NAME" scripts/report-coverage.sh
15877
fi
159-
160-
notifications:
161-
irc:
162-
channels:
163-
- "chat.freenode.net#pytest"
164-
on_success: change
165-
on_failure: change
166-
skip_join: true
167-
email:
168-
78+
branches:
79+
only:
80+
- 4.6.x

0 commit comments

Comments
 (0)