name: CI

on:
  pull_request:
  push:
    branches: [ develop, master ]

jobs:
  main:
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: "Test: Python 3.7"
            python: "3.7"
            tox: py37
          - name: "Test: Python 3.8"
            python: "3.8"
            tox: py38
          - name: "Test: Python 3.9"
            python: "3.9"
            tox: py39
          - name: "Test: Python 3.10"
            python: "3.10"
            tox: py310
          - name: "Test: Python 3.11"
            python: "3.11"
            tox: py311
          - name: "Test: Python 3.12"
            python: "3.12"
            tox: py312
            coverage: true
          - name: "Lint: check-manifest"
            python: "3.12"
            tox: check-manifest
          - name: "Lint: flake8"
            python: "3.12"
            tox: flake8
          - name: "Lint: mypy"
            python: "3.12"
            tox: mypy
          - name: "Docs"
            python: "3.12"
            tox: docs

    name: ${{ matrix.name }}
    runs-on: ubuntu-22.04
    container: ghcr.io/mopidy/ci:latest

    steps:
      - uses: actions/checkout@v3
      - name: Fix home dir permissions to enable pip caching
        run: chown -R root /github/home
      - uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python }}
          cache: pip
          cache-dependency-path: setup.cfg
      - run: python -m pip install pygobject tox
      - run: python -m tox -e ${{ matrix.tox }}
        if: ${{ ! matrix.coverage }}
      - run: python -m tox -e ${{ matrix.tox }} -- --cov-report=xml
        if: ${{ matrix.coverage }}
      - uses: codecov/codecov-action@v3
        if: ${{ matrix.coverage }}
