name: CI

on: [ push ]

jobs:
  tests:
    name: PHP ${{ matrix.php }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php: [ 7.2, 7.3, 7.4, 8.0, 8.1 ]
        contao: [ 4.9.*, 4.13.* ]
        exclude:
          - php: 7.2
            contao: 4.13.*
          - php: 7.3
            contao: 4.13.*

    steps:
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: dom, fileinfo, filter, gd, hash, intl, json, mbstring, pcre, pdo, zlib
          tools: phpunit
          coverage: none

      - name: Checkout
        uses: actions/checkout@v3

      - name: Install the dependencies
        id: composer-install
        run: composer require contao/core-bundle:${{ matrix.contao }} --no-interaction

      - name: Run the unit tests
        if: steps.composer-install.conclusion == 'success' && steps.composer-install.outcome == 'success'
        run: php vendor/bin/phpunit -c phpunit.xml.dist --colors=always

  coverage:
    runs-on: ubuntu-latest
    steps:
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 7.4
          extensions: dom, fileinfo, filter, gd, hash, intl, json, mbstring, pcre, pdo, zlib
          coverage: xdebug
          tools: php-cs-fixer, phpunit

      - name: Checkout
        uses: actions/checkout@v3

      - name: Install the dependencies
        run: composer require contao/core-bundle:4.13.* --no-interaction

      - name: Generate the coverage report
        run: php vendor/bin/phpunit -c phpunit.xml.dist --coverage-clover build/logs/clover.xml

      - name: Coveralls
        env:
          COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          composer global require php-coveralls/php-coveralls
          php-coveralls --coverage_clover=build/logs/clover.xml -v

  phpstan:
    runs-on: ubuntu-latest
    steps:
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0

      - name: Checkout
        uses: actions/checkout@v2

      - name: Install the dependencies
        run: composer install --no-interaction

      - name: PHPStan
        run: vendor/bin/phpstan analyse -c phpstan.neon