name: CI

on:
  push:
  pull_request:

jobs:
  check_composer:
    name: Check composer.json
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          coverage: none
          php-version: '8.4'
      - run: composer validate --strict --no-check-lock

  tests:
    name: "Tests on PHP ${{ matrix.php }}${{ matrix.name_suffix }}"
    runs-on: ubuntu-latest
    env:
      SYMFONY_PHPUNIT_REMOVE: '' # don't remove prophecy
      SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT: 1

    strategy:
      fail-fast: false
      matrix:
        php: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5' ]
        min_stability: [ '' ]
        name_suffix: [ '' ]
        composer_flags: [ '' ]
        include:
          - php: '8.5'
            min_stability: 'dev'
            name_suffix: ' (dev deps)'
          - php: '7.4'
            min_stability: ''
            name_suffix: ' (lowest deps)'
            composer_flags: '--prefer-lowest --prefer-stable'

    steps:
      -   uses: actions/checkout@v4
      -   uses: shivammathur/setup-php@v2
          with:
            coverage: "none"
            php-version: "${{ matrix.php }}"

      -   name: Configure stability
          if: "matrix.min_stability != ''"
          run: composer config minimum-stability "${{ matrix.min_stability }}"

      -   name: Install dependencies
          run: composer update --ansi --no-progress --prefer-dist --no-interaction ${{ matrix.composer_flags }}

      -   name: Run tests
          run: vendor/bin/phpunit
