name: Unit Testing

on: [ pull_request ]

jobs:
  phpunit:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-versions: [ '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3' ]
        include:
          - php: '8.2'
            report: true

    name: PHP ${{ matrix.php-versions }} PHPUnit Test
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          ini-values: error_reporting=E_ALL

      - name: Install Composer Dependencies
        uses: "ramsey/composer-install@v2"

      - name: Log debug information
        run: |
          php --version
          composer --version

      - name: Run PHPUnit Tests without coverage
        if: ${{ ! matrix.report }}
        run: ./vendor/bin/phpunit

      - name: Run PHPUnit Tests with coverage
        if: ${{ matrix.report }}
        run: ./vendor/bin/phpunit --coverage-clover=./coverage/coverage1.xml

      - name: Check Code Coverage
        if: ${{ matrix.report }}
        uses: codecov/codecov-action@v3
        with:
          directory: ./coverage/