name: Tests

on: [push, pull_request]

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

            fail-fast: false

        name: PHP ${{ matrix.php }} tests on ${{ matrix.os }}
        steps:
            - uses: actions/checkout@v3
            - 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: vendor/bin/tester tests -s -C
            - if: failure()
              uses: actions/upload-artifact@v3
              with:
                  name: output
                  path: tests/**/output


    code_coverage:
        name: Code Coverage
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3
            - uses: shivammathur/setup-php@v2
              with:
                  php-version: 8.0
                  extensions: iconv, json, mbstring, xml, gd, intl, tokenizer
                  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
