name: CI

on: [ push ]

jobs:
  tests:
    name: PHP ${{ matrix.php }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php: [ 7.1, 7.2., 7.3, 7.4, 8.0 ]
    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@v2

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

      - name: Run the unit tests
        if: ${{ matrix.php == 8.0 }}
        run: php vendor/bin/phpunit -c phpunit.xml.dist --colors=always
        continue-on-error: true

      - name: Run the unit tests
        if: ${{ matrix.php != 8.0 }}
        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@v2

      - name: Install the dependencies
        run: composer install --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