name: Test

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.10', '3.13']
        target: [pil, imagemagick, graphicsmagick, redis, wand, dbm]

        include:
          - python-version: '3.10'
            target: 'qa'
    steps:
    - uses: actions/checkout@v4

    - name: Start Redis
      uses: supercharge/redis-github-action@1.5.0

    - name: Install system dependencies
      run: |
        sudo apt-get update
        sudo apt-get install imagemagick libgraphicsmagick1-dev graphicsmagick libjpeg62 zlib1g-dev

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}

    - name: Get pip cache dir
      id: pip-cache
      run: |
        echo "CACHE_DIR=$(pip cache dir)" >> "$GITHUB_OUTPUT"

    - name: Cache
      uses: actions/cache@v4
      with:
        path: ${{ steps.pip-cache.outputs.CACHE_DIR }}
        key:
          test-${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}
        restore-keys: |
          test-${{ matrix.python-version }}-v1-

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install --upgrade tox tox-gh-actions

    - name: Tox tests
      run: |
        tox -v
      env:
        TARGET: ${{ matrix.target }}

    - name: Upload coverage
      uses: codecov/codecov-action@v4
      with:
        name: Python ${{ matrix.python-version }}
