name: "CI"

on:
    pull_request:
    push:
        branches:
            - 'main'

env:
    SYMFONY_PHPUNIT_DIR: "$HOME/symfony-bridge/.phpunit"

jobs:
    tests:
        name: "PHP ${{ matrix.php }} ${{ matrix.mode }}"

        runs-on: ubuntu-latest

        strategy:
            fail-fast: false
            matrix:
                include:
                  - php: '7.1'
                  - php: '7.2'
                  - php: '7.3'
                  - php: '7.4'
                  - php: '8.0'
                  - php: '8.1'
                  - php: '7.4'
                    mode: low-deps

        steps:
            - name: "Checkout code"
              uses: actions/checkout@v2.3.3

            - name: "Install PHP with extensions"
              uses: shivammathur/setup-php@2.7.0
              with:
                  coverage: "none"
                  php-version: ${{ matrix.php }}
                  tools: composer:v2

            - name: "Validate composer.json"
              run: "composer validate --strict --no-check-lock"

            - run: |
                composer require --no-update composer/composer:^1.0.2 --ansi

                if [[ "${{ matrix.mode }}" = low-deps ]]; then
                    composer u --prefer-lowest --prefer-stable --ansi
                else
                    composer u --ansi
                fi

            - name: "Install PHPUnit"
              run: vendor/bin/simple-phpunit install

            - run: vendor/bin/simple-phpunit

            - run: |
                composer require --no-update composer/composer:^2 --ansi

                if [[ "${{ matrix.mode }}" = low-deps ]]; then
                    composer u --prefer-lowest --prefer-stable --ansi
                else
                    composer u --ansi
                fi

            - run: vendor/bin/simple-phpunit

            - if: matrix.php == '7.1'
              name: "Lint PHP files"
              run: find src/ -name '*.php' | xargs -n1 php -l
