Skip to content

Commit 020831d

Browse files
authored
Merge pull request #6884 from fermezz/use-github-actions
Fix travis config and coverage report.
2 parents f606fef + c5831ac commit 020831d

File tree

5 files changed

+277
-120
lines changed

5 files changed

+277
-120
lines changed

.github/workflows/main.yml

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