name: Build and test

on:
    # Only on pushes to master or one of the release branches we build on push
    push:
        branches:
            - master
            - "[0-9].[0-9]+-branch"
        tags:
    # Build pull requests
    pull_request:

jobs:
    test:
        strategy:
            matrix:
                py:
                    - "3.7"
                    - "3.8"
                    - "3.9"
                    - "3.10"
                    - "3.11"
                    - "pypy-3.7"
                os:
                    - "ubuntu-latest"
                    # - "windows-latest"
                    - "macos-latest"
                architecture:
                    - x64
                    - x86
                exclude:
                    # Linux and macOS don't have x86 python
                    - os: "ubuntu-latest"
                      architecture: x86
                    - os: "macos-latest"
                      architecture: x86
        name: "Python: ${{ matrix.py }}-${{ matrix.architecture }} on ${{ matrix.os }}"
        runs-on: ${{ matrix.os }}
        steps:
            - uses: actions/checkout@v2
            - name: Setup python
              uses: actions/setup-python@v2
              with:
                  python-version: ${{ matrix.py }}
                  architecture: ${{ matrix.architecture }}
            - run: pip install tox
            - name: Running tox
              run: tox -e py
    coverage:
        runs-on: ubuntu-latest
        name: Validate coverage
        steps:
            - uses: actions/checkout@v2
            - name: Setup python 3.10
              uses: actions/setup-python@v2
              with:
                  python-version: "3.10"
                  architecture: x64

            - run: pip install tox
            - run: tox -e py310,coverage
    docs:
        runs-on: ubuntu-latest
        name: Build the documentation
        steps:
            - uses: actions/checkout@v2
            - name: Setup python
              uses: actions/setup-python@v2
              with:
                  python-version: "3.10"
                  architecture: x64
            - run: pip install tox
            - run: tox -e docs
    lint:
        runs-on: ubuntu-latest
        name: Lint the package
        steps:
            - uses: actions/checkout@v2
            - name: Setup python
              uses: actions/setup-python@v2
              with:
                  python-version: "3.10"
                  architecture: x64
            - run: pip install tox
            - run: tox -e lint
