name: Run tests
on:
  push:
  pull_request:
jobs:
    php-tests:
        runs-on: ${{ matrix.os }}
        strategy:
            matrix:
                php: [7.4, 8.0, 8.1]
                laravel: [7.*, 8.*]
                dependency-version: [prefer-stable]
                os: [ubuntu-latest]
                exclude:
                    - laravel: 7.*
                      php: 8.1
        name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} - ${{ matrix.os }}
        steps:
            - name: Checkout code
              uses: actions/checkout@v2
            - name: Setup PHP
              uses: shivammathur/setup-php@v2
              with:
                  php-version: ${{ matrix.php }}
                  extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo
                  coverage: xdebug
                  tools: composer:v2
            - name: Set up .env for tests
              run: cp .env.testing .env
            - name: Install dependencies
              run: |
                composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update
                composer update --${{ matrix.dependency-version }} --no-interaction --no-progress
            - name: Create SQLite database
              run: |
                mkdir -p database
                touch database/database.sqlite
            - name: Execute tests via PHPUnit
              run: vendor/bin/phpunit --coverage-clover clover.xml 
  |