name: build
on: [push, pull_request]
jobs:
  test:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    timeout-minutes: 30
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: 'check'
            python: '3.9'
            toxpython: 'python3.9'
            tox_env: 'check'
            os: 'ubuntu-latest'
          - name: 'docs'
            python: '3.9'
            toxpython: 'python3.9'
            tox_env: 'docs'
            os: 'ubuntu-latest'
          - name: 'py36 (ubuntu)'
            python: '3.6'
            toxpython: 'python3.6'
            python_arch: 'x64'
            tox_env: 'py36'
            os: 'ubuntu-latest'
          - name: 'py36 (windows)'
            python: '3.6'
            toxpython: 'python3.6'
            python_arch: 'x64'
            tox_env: 'py36'
            os: 'windows-latest'
          - name: 'py36 (macos)'
            python: '3.6'
            toxpython: 'python3.6'
            python_arch: 'x64'
            tox_env: 'py36'
            os: 'macos-latest'
          - name: 'py37 (ubuntu)'
            python: '3.7'
            toxpython: 'python3.7'
            python_arch: 'x64'
            tox_env: 'py37'
            os: 'ubuntu-latest'
          - name: 'py37 (windows)'
            python: '3.7'
            toxpython: 'python3.7'
            python_arch: 'x64'
            tox_env: 'py37'
            os: 'windows-latest'
          - name: 'py37 (macos)'
            python: '3.7'
            toxpython: 'python3.7'
            python_arch: 'x64'
            tox_env: 'py37'
            os: 'macos-latest'
          - name: 'py38 (ubuntu)'
            python: '3.8'
            toxpython: 'python3.8'
            python_arch: 'x64'
            tox_env: 'py38'
            os: 'ubuntu-latest'
          - name: 'py38 (windows)'
            python: '3.8'
            toxpython: 'python3.8'
            python_arch: 'x64'
            tox_env: 'py38'
            os: 'windows-latest'
          - name: 'py38 (macos)'
            python: '3.8'
            toxpython: 'python3.8'
            python_arch: 'x64'
            tox_env: 'py38'
            os: 'macos-latest'
          - name: 'py39 (ubuntu)'
            python: '3.9'
            toxpython: 'python3.9'
            python_arch: 'x64'
            tox_env: 'py39'
            os: 'ubuntu-latest'
          - name: 'py39 (windows)'
            python: '3.9'
            toxpython: 'python3.9'
            python_arch: 'x64'
            tox_env: 'py39'
            os: 'windows-latest'
          - name: 'py39 (macos)'
            python: '3.9'
            toxpython: 'python3.9'
            python_arch: 'x64'
            tox_env: 'py39'
            os: 'macos-latest'
          - name: 'py310 (ubuntu)'
            python: '3.10'
            toxpython: 'python3.10'
            python_arch: 'x64'
            tox_env: 'py310'
            os: 'ubuntu-latest'
          - name: 'py310 (windows)'
            python: '3.10'
            toxpython: 'python3.10'
            python_arch: 'x64'
            tox_env: 'py310'
            os: 'windows-latest'
          - name: 'py310 (macos)'
            python: '3.10'
            toxpython: 'python3.10'
            python_arch: 'x64'
            tox_env: 'py310'
            os: 'macos-latest'
          - name: 'pypy37 (ubuntu)'
            python: 'pypy-3.7'
            toxpython: 'pypy3.7'
            python_arch: 'x64'
            tox_env: 'pypy37'
            os: 'ubuntu-latest'
          - name: 'pypy37 (windows)'
            python: 'pypy-3.7'
            toxpython: 'pypy3.7'
            python_arch: 'x64'
            tox_env: 'pypy37'
            os: 'windows-latest'
          - name: 'pypy37 (macos)'
            python: 'pypy-3.7'
            toxpython: 'pypy3.7'
            python_arch: 'x64'
            tox_env: 'pypy37'
            os: 'macos-latest'
          - name: 'pypy38 (ubuntu)'
            python: 'pypy-3.8'
            toxpython: 'pypy3.8'
            python_arch: 'x64'
            tox_env: 'pypy38'
            os: 'ubuntu-latest'
          - name: 'pypy38 (windows)'
            python: 'pypy-3.8'
            toxpython: 'pypy3.8'
            python_arch: 'x64'
            tox_env: 'pypy38'
            os: 'windows-latest'
          - name: 'pypy38 (macos)'
            python: 'pypy-3.8'
            toxpython: 'pypy3.8'
            python_arch: 'x64'
            tox_env: 'pypy38'
            os: 'macos-latest'
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python }}
        architecture: ${{ matrix.python_arch }}
    - name: install dependencies
      run: |
        python -mpip install --progress-bar=off -r ci/requirements.txt
        virtualenv --version
        pip --version
        tox --version
        pip list --format=freeze
    - name: test
      env:
        TOXPYTHON: '${{ matrix.toxpython }}'
      run: >
        tox -e ${{ matrix.tox_env }} -v
