name: Code_Checks

on: ["push", "pull_request"]

jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php: ['8.2']
        stability: [ prefer-stable ]
        minimum-stability: [ stable ]
        symfony-version: ['6.4.*']
        include:
          - php: '8.0'
            symfony-version: 5.4.*
            stability: prefer-lowest
          - php: '8.1'
            symfony-version: 5.4.*
            stability: prefer-stable
          - php: '8.1'
            symfony-version: 6.3.*
            stability: prefer-stable
          - php: '8.2'
            symfony-version: 6.3.*
            stability: prefer-stable
          - php: '8.3'
            symfony-version: 6.4.*
            stability: prefer-stable
          - php: '8.3'
            symfony-version: 7.0.*
            stability: prefer-stable

    name: PHP ${{ matrix.php }} - ${{ matrix.symfony-version }} - ${{ matrix.stability }}
    steps:
      - uses: actions/checkout@v4

      - name: Cache dependencies
        uses: actions/cache@v3
        with:
          path: ~/.composer/cache/files
          key: dependencies-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}

      # use PHP of specific version
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: pcov
          coverage: pcov

      - name: Install dependencies
        env:
          SYMFONY_REQUIRE: ${{ matrix.symfony-version }}
        run: |
          composer global config --no-plugins allow-plugins.symfony/flex true
          composer global require --no-progress --no-scripts --no-plugins symfony/flex
          composer config minimum-stability ${{ matrix.minimum-stability }}
          composer update --no-interaction --prefer-dist
          vendor/bin/simple-phpunit install

      - name: Execute tests
        env:
          SYMFONY_DEPRECATIONS_HELPER: 'weak'
        run: vendor/bin/phpunit
