Fix CI #169
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- "master" | |
- "release-*" | |
pull_request: | |
branches: | |
- "master" | |
- "release-*" | |
workflow_dispatch: | |
env: | |
PYTEST_ADDOPTS: "-vv --cov-report=xml:coverage-ci.xml" | |
PIP_DISABLE_PIP_VERSION_CHECK: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Linux | |
- tox_env: "py310-coverage" | |
python: "3.10" | |
os: ubuntu-20.04 | |
- tox_env: "py39-ipython-coverage" | |
python: "3.9" | |
os: ubuntu-20.04 | |
- tox_env: "py38-editable-coverage" | |
python: "3.8" | |
os: ubuntu-20.04 | |
- tox_env: "py37-coverage" | |
python: "3.7" | |
os: ubuntu-20.04 | |
- tox_env: "py36-coverage" | |
python: "3.6" | |
os: ubuntu-20.04 | |
- tox_env: "py35-coverage" | |
python: "3.5" | |
os: ubuntu-20.04 | |
- tox_env: "py27-coverage" | |
python: "2.7" | |
os: ubuntu-20.04 | |
pytest: "pytest @ git https://github.com/blueyed/[email protected]" | |
- tox_env: "pypy3-coverage" | |
python: "pypy-3.7" | |
os: ubuntu-20.04 | |
- tox_env: "pypy-coverage" | |
python: "pypy-2.7" | |
os: ubuntu-20.04 | |
pytest: "pytest @ git https://github.com/blueyed/[email protected]" | |
# macOS | |
- tox_env: "py37-coverage" | |
python: "3.7" | |
os: macos-10.15 | |
# Windows | |
- tox_env: "py38-coverage" | |
python: "3.8" | |
os: windows-2019 | |
- tox_env: "py34-coverage" | |
python: "3.4" | |
# Python 3.4 is only available on Windows. | |
# (https://github.com/actions/setup-python/issues/157#issuecomment-724152312) | |
os: windows-2019 | |
pytest: "pytest @ git https://github.com/blueyed/[email protected]" | |
tox: tox==3.14.0 # tox 3.14.1 dropped support for py34. | |
- tox_env: "py27-coverage" | |
python: "2.7" | |
os: windows-2016 | |
pytest: "pytest @ git https://github.com/blueyed/[email protected]" | |
# Generic | |
- tox_env: "checkqa" | |
python: "3.9" | |
os: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 2000 | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python }} | |
# Skip for py27, where it is available in the image (ubuntu-20.04). | |
if: matrix.python != '2.7' | |
- name: Set up Python 2 | |
if: matrix.python == '2.7' | |
run: | | |
ln -sfn /usr/bin/python2.7 /usr/local/bin/python | |
apt-get install python-pip | |
# Caching. | |
- name: set PY_CACHE_KEY | |
run: echo "PY_CACHE_KEY=$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode() sys.executable.encode()).hexdigest())')" >> $GITHUB_ENV | |
- name: Cache .tox | |
uses: actions/cache@v1 | |
with: | |
path: ${{ github.workspace }}/.tox/${{ matrix.tox_env }} | |
key: "tox|${{ matrix.os }}|${{ matrix.tox_env }}|${{ env.PY_CACHE_KEY }}|${{ hashFiles('tox.ini', 'setup.*') }}" | |
- name: (Initial) version information/pinning | |
run: | | |
python -VV | |
python -m site | |
python -m pip --version | |
python -m pip list | |
if [[ "${{ matrix.python }}" == "3.4" ]]; then | |
# Install latest available pip. | |
# 7.1.2 (installed) is too old to not install too new packages, | |
# including pip itself. 19.2 dropped support for Python 3.4. | |
python -m pip install -U pip==19.1.1 | |
fi | |
python -m pip install -U setuptools==42.0.2 | |
python -m pip install -U virtualenv==20.4.3 | |
- name: Install tox | |
run: python -m pip install ${{ matrix.tox || 'tox' }} | |
- name: Version information | |
run: python -m pip list | |
- name: Setup tox environment | |
id: setup_tox | |
env: | |
PYTEST: ${{ matrix.pytest || 'pytest @ git https://github.com/blueyed/pytest@my-master' }} | |
run: python -m tox --notest -v -e ${{ matrix.tox_env }} --force-dep="$PYTEST" | |
- name: Test | |
env: | |
COLUMNS: "90" # better alignment (working around https://github.com/blueyed/pytest/issues/491). | |
PY_COLORS: "1" | |
PYTEST: ${{ matrix.pytest || 'pytest @ git https://github.com/blueyed/pytest@my-master' }} | |
# UTF-8 mode for Windows (https://docs.python.org/3/using/windows.html#utf-8-mode). | |
PYTHONUTF8: "1" | |
TOX_TESTENV_PASSENV: "PYTHONUTF8" | |
run: python -m tox -v -e ${{ matrix.tox_env }} --force-dep="$PYTEST" | |
- name: Report coverage | |
if: always() && (contains(matrix.tox_env, '-coverage') && (steps.setup_tox.outcome == 'success')) | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./coverage-ci.xml | |
flags: ${{ runner.os }} | |
name: ${{ matrix.tox_env }} | |
fail_ci_if_error: true |