name: Tests

on: [push, pull_request]

jobs:
    tests:
        runs-on: ubuntu-latest
        strategy:
            matrix:
                php: ['8.1', '8.2', '8.3', '8.4', '8.5']

            fail-fast: false

        name: PHP ${{ matrix.php }} tests
        steps:
            - uses: actions/checkout@v4
            - uses: shivammathur/setup-php@v2
              with:
                  php-version: ${{ matrix.php }}
                  coverage: none

            - run: composer install --no-progress --prefer-dist
            - run: vendor/bin/tester tests -s -C
            - if: failure()
              uses: actions/upload-artifact@v4
              with:
                  name: output-${{ matrix.php }}
                  path: tests/**/output


    lowest_dependencies:
        name: Lowest Dependencies
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - uses: shivammathur/setup-php@v2
              with:
                  php-version: 8.1
                  coverage: none

            - run: composer update --no-progress --prefer-dist --prefer-lowest --prefer-stable
            - run: vendor/bin/tester tests -s -C


    code_coverage:
        name: Code Coverage
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - uses: shivammathur/setup-php@v2
              with:
                  php-version: 8.1
                  coverage: none

            - run: composer install --no-progress --prefer-dist
            - run: vendor/bin/tester -p phpdbg tests -s -C --coverage ./coverage.xml --coverage-src ./src
            - run: wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.4.3/php-coveralls.phar
            - env:
                  COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              run: php php-coveralls.phar --verbose --config tests/.coveralls.yml
