diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2527c4b8bb..80bb99fde4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -234,12 +234,33 @@ jobs: # Bust the cache at least once a month - output format: YYYY-MM. custom-cache-suffix: $(date -u "+%Y-%m") + - name: Grab PHPUnit version + id: phpunit_version + # yamllint disable-line rule:line-length + run: echo "VERSION=$(vendor/bin/phpunit --version | grep --only-matching --max-count=1 --extended-regexp '\b[0-9]+\.[0-9]+')" >> $GITHUB_OUTPUT + + - name: "DEBUG: Show grabbed version" + run: echo ${{ steps.phpunit_version.outputs.VERSION }} + - name: 'PHPCS: set the path to PHP' run: php bin/phpcs --config-set php_path php - - name: 'PHPUnit: run the tests with code coverage' + # PHPUnit 9.3 started using PHP-Parser for code coverage, which can cause issues due to Parser + # also polyfilling PHP tokens. + # As of PHPUnit 9.3.4, a cache warming option is available. + # Using that option prevents issues with PHP-Parser backfilling PHP tokens during our test runs. + - name: "Warm the PHPUnit cache (PHPUnit 9.3+)" + if: ${{ steps.phpunit_version.outputs.VERSION >= '9.3' }} + run: vendor/bin/phpunit --coverage-cache ./build/phpunit-cache --warm-coverage-cache + + - name: "Run the unit tests with code coverage (PHPUnit < 9.3)" + if: ${{ steps.phpunit_version.outputs.VERSION < '9.3' }} run: vendor/bin/phpunit tests/AllTests.php + - name: "Run the unit tests with code coverage (PHPUnit 9.3+)" + if: ${{ steps.phpunit_version.outputs.VERSION >= '9.3' }} + run: vendor/bin/phpunit tests/AllTests.php --coverage-cache ./build/phpunit-cache + - name: Upload coverage results to Coveralls if: ${{ success() }} uses: coverallsapp/github-action@v2 diff --git a/composer.json b/composer.json index c0d0e4e082..ae7c7604aa 100644 --- a/composer.json +++ b/composer.json @@ -36,7 +36,7 @@ "ext-xmlwriter": "*" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ "bin/phpcbf",