# From https://github.com/sebastianbergmann/phpunit/blob/20ab19d3aed56fccf9569cd33c6cd0baab0ec272/.github/workflows/ci.yml # (With many modifications) on: pull_request: branches: - main push: branches: - main name: CI jobs: coding-guidelines: name: Coding Guidelines runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Install PHP uses: shivammathur/setup-php@v2 with: php-version: 8.0 coverage: none - name: Install dependencies run: composer install --no-ansi --no-interaction --no-progress - name: Run phpcs run: composer cs - name: Run linter run: composer lint backward-compatibility: name: Backward Compatibility runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Fetch tags run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: php-version: 7.4 coverage: none extensions: intl - name: Install roave/backward-compatibility-check run: | mkdir -p tools composer --working-dir=tools require roave/backward-compatibility-check:^5 --no-update composer --working-dir=tools config --no-plugins allow-plugins.ocramius/package-versions true composer --working-dir=tools update - name: Run roave/backward-compatibility-check run: ./tools/vendor/bin/roave-backward-compatibility-check --from=5.0.0 tests: name: Tests runs-on: ${{ matrix.os }} env: PHP_EXTENSIONS: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter strategy: matrix: os: - ubuntu-latest - windows-latest php-version: - "8.0" php-ini-values: - assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit_buffer_size=4096M, opcache.jit=1205 dependencies: - locked include: - os: ubuntu-latest php-version: "8.1" dependencies: highest php-ini-values: assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit_buffer_size=4096M, opcache.jit=1205 steps: - name: Checkout uses: actions/checkout@v2 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} coverage: pcov extensions: ${{ env.PHP_EXTENSIONS }} ini-values: ${{ matrix.php-ini-values }} - name: Determine composer cache directory on Linux if: matrix.os == 'ubuntu-latest' run: echo "COMPOSER_CACHE_DIR=$(composer config cache-dir)" >> $GITHUB_ENV - name: Determine composer cache directory on Windows if: matrix.os == 'windows-latest' run: Add-Content -Path $ENV:GITHUB_ENV -Value "COMPOSER_CACHE_DIR=~\AppData\Local\Composer" - name: Cache dependencies installed with composer uses: actions/cache@v1 with: path: ${{ env.COMPOSER_CACHE_DIR }} key: php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.json') }} restore-keys: | php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - name: Make sure composer.json is valid before we start modifyig it run: composer validate - name: Clear platform php configuration in case we need to update phpunit run: composer config --unset platform.php - name: Update phpunit if dependencies are locked in case phpunit version in lock file is not compatible if: matrix.dependencies == 'locked' run: | composer install --no-ansi --no-interaction --no-progress composer update --no-ansi --no-interaction --no-progress phpunit/phpunit --with-all-dependencies - name: Install lowest dependencies with composer if: matrix.dependencies == 'lowest' run: composer update --no-ansi --no-interaction --no-progress --prefer-lowest - name: Install highest dependencies with composer if: matrix.dependencies == 'highest' run: composer update --no-ansi --no-interaction --no-progress # Use "script" hack to give us a tty. See https://github.com/actions/runner/issues/241#issuecomment-745902718 - name: Run tests with phpunit if: matrix.os != 'windows-latest' shell: 'script -q -e -c "bash {0}"' run: composer unit # Run without "script" on Windows - name: Run tests with phpunit if: matrix.os == 'windows-latest' run: composer unit - name: Publish code coverage to Codecov if: matrix.os == 'ubuntu-latest' && matrix.php-version == '8.0' run: bash <(curl -s https://codecov.io/bash)