name: >- 👷 Test suite on: push: pull_request: schedule: - cron: 1 0 * * * # Run daily at 0:01 UTC jobs: tests: name: >- ${{ matrix.python-version }} / ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: # max-parallel: 5 matrix: python-version: - 3.8 - pypy3 - 3.7 - 3.6 - 3.5 os: - ubuntu-18.04 - ubuntu-16.04 - macOS-latest # - windows-2019 # - windows-2016 include: # Pre-release versions (GH-shipped) - os: ubuntu-20.04 python-version: 3.9.0-beta.4 - 3.9.0 # Pre-release versions (deadsnakes) - os: ubuntu-20.04 python-version: 3.9-beta # Dev versions (deadsnakes) - os: ubuntu-20.04 python-version: 3.9-dev - os: ubuntu-20.04 python-version: 3.8-dev env: NETWORK_REQUIRED: 1 PYTHON_VERSION: ${{ matrix.python-version }} TOX_PARALLEL_NO_SPINNER: 1 TOXENV: python USE_DEADSNAKES: false steps: - uses: actions/checkout@master - name: Set flag to use deadsnakes if: >- endsWith(env.PYTHON_VERSION, '-beta') || endsWith(env.PYTHON_VERSION, '-dev') run: | from __future__ import print_function python_version = '${{ env.PYTHON_VERSION }}'.replace('-beta', '') print('::set-env name=PYTHON_VERSION::{ver}'.format(ver=python_version)) print('::set-env name=USE_DEADSNAKES::true') shell: python - name: Set up Python ${{ env.PYTHON_VERSION }} (deadsnakes) uses: deadsnakes/action@v1.0.0 if: fromJSON(env.USE_DEADSNAKES) && true || false with: python-version: ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }} uses: actions/setup-python@v2.1.1 if: >- !fromJSON(env.USE_DEADSNAKES) && true || false with: python-version: ${{ env.PYTHON_VERSION }} - name: Log Python version run: >- python --version - name: Log Python location run: >- which python - name: Log Python env run: >- python -m sysconfig - name: Pip cache uses: actions/cache@v1 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('setup.cfg') }} restore-keys: | ${{ runner.os }}-pip- ${{ runner.os }}- - name: Upgrade pip/setuptools/wheel run: >- python -m pip install --disable-pip-version-check --upgrade pip setuptools wheel - name: Install tox run: >- python -m pip install --upgrade tox tox-venv - name: Log installed dists run: >- python -m pip freeze --all - name: Adjust TOXENV for PyPy if: startsWith(env.PYTHON_VERSION, 'pypy') run: >- echo "::set-env name=TOXENV::${{ env.PYTHON_VERSION }}" - name: Log env vars run: >- env - name: Verify that there's no cached Python modules in sources if: >- ! startsWith(matrix.os, 'windows-') run: >- ! grep pyc setuptools.egg-info/SOURCES.txt - name: 'Initialize tox envs: ${{ matrix.env.TOXENV }}' run: >- python -m tox --parallel auto --parallel-live --notest --skip-missing-interpreters false - name: Test with tox run: >- python -m tox --parallel auto --parallel-live -- -vvvvv