name: Test
on: [push, pull_request]
jobs:
  Build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
        django-version: ['4.2', '5.2', '6.0.*']
        exclude:
          - python-version: 3.13
            django-version: 4.2

          - python-version: 3.14
            django-version: 4.2

          - python-version: 3.10
            django-version: 6.0.*

          - python-version: 3.11
            django-version: 6.0.*
      fail-fast: false

    steps:
      - uses: actions/checkout@v6
      - name: 'Set up Python ${{ matrix.python-version }}'
        uses: actions/setup-python@v6
        with:
          python-version: '${{ matrix.python-version }}'
          cache: 'pip'
      - name: Install dependencies
        run: |
          pip install -r requirements.txt
          pip install -r tests/requirements.txt
          pip install "Django==${{ matrix.django-version }}" .
      - name: Run Tests
        run: |
          echo "$(python --version) / Django $(django-admin --version)"
          export DJANGO_SETTINGS_MODULE=tests.settings
          export PYTHONPATH=.
          coverage run --source=avatar `which django-admin` test tests
          coverage report
          coverage xml
      - name: Upload coverage reports to Codecov with GitHub Action
        uses: codecov/codecov-action@v5
