name: Tests

on: [push, pull_request]

jobs:
    tests:
        runs-on: ${{ matrix.os }}
        strategy:
            matrix:
                os: [ubuntu-latest, windows-latest]
                php: ['8.2', '8.3', '8.4', '8.5']

            fail-fast: false

        name: PHP ${{ matrix.php }} tests on ${{ matrix.os }}
        steps:
            - uses: actions/checkout@v4
            - uses: shivammathur/setup-php@v2
              with:
                  php-version: ${{ matrix.php }}
                  extensions: iconv, json, mbstring, xml, gd, intl, tokenizer
                  coverage: none

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


    code_coverage:
        name: Code Coverage
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - uses: shivammathur/setup-php@v2
              with:
                  php-version: 8.2
                  extensions: iconv, json, mbstring, xml, gd, intl, tokenizer
                  coverage: none

            - run: composer install --no-progress --prefer-dist
            - run: composer tester -- -p phpdbg --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
