name: Testing

on:
  push:
    branches:
      - main
    paths-ignore:
      - docs/**
  pull_request:
    branches:
      - main
    paths-ignore:
      - docs/**

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  pytest:
    strategy:
      fail-fast: false
      matrix:
        python-version:
          - '3.9'
          - '3.10'
          - '3.11'
          - '3.12'
          - '3.13'
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v5
      - name: Setup Python
        run: uv python install ${{ matrix.python-version }}
      - name: Install project
        run: uv sync --group tests
      - name: Run tests
        env:
          COMICVINE__API_KEY: IGNORED
        run: uv run pytest
  collector:
    needs: [pytest]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - name: Check for failures
        if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
        run: echo job failed && exit 1
