@@ -234,12 +234,33 @@ jobs:
234
234
# Bust the cache at least once a month - output format: YYYY-MM.
235
235
custom-cache-suffix : $(date -u "+%Y-%m")
236
236
237
+ - name : Grab PHPUnit version
238
+ id : phpunit_version
239
+ # yamllint disable-line rule:line-length
240
+ run : echo "VERSION=$(vendor/bin/phpunit --version | grep --only-matching --max-count=1 --extended-regexp '\b[0-9]+\.[0-9]+')" >> $GITHUB_OUTPUT
241
+
242
+ - name : " DEBUG: Show grabbed version"
243
+ run : echo ${{ steps.phpunit_version.outputs.VERSION }}
244
+
237
245
- name : ' PHPCS: set the path to PHP'
238
246
run : php bin/phpcs --config-set php_path php
239
247
240
- - name : ' PHPUnit: run the tests with code coverage'
248
+ # PHPUnit 9.3 started using PHP-Parser for code coverage, which can cause issues due to Parser
249
+ # also polyfilling PHP tokens.
250
+ # As of PHPUnit 9.3.4, a cache warming option is available.
251
+ # Using that option prevents issues with PHP-Parser backfilling PHP tokens during our test runs.
252
+ - name : " Warm the PHPUnit cache (PHPUnit 9.3+)"
253
+ if : ${{ steps.phpunit_version.outputs.VERSION >= '9.3' }}
254
+ run : vendor/bin/phpunit --coverage-cache ./build/phpunit-cache --warm-coverage-cache
255
+
256
+ - name : " Run the unit tests with code coverage (PHPUnit < 9.3)"
257
+ if : ${{ steps.phpunit_version.outputs.VERSION < '9.3' }}
241
258
run : vendor/bin/phpunit tests/AllTests.php
242
259
260
+ - name : " Run the unit tests with code coverage (PHPUnit 9.3+)"
261
+ if : ${{ steps.phpunit_version.outputs.VERSION >= '9.3' }}
262
+ run : vendor/bin/phpunit tests/AllTests.php --coverage-cache ./build/phpunit-cache
263
+
243
264
- name : Upload coverage results to Coveralls
244
265
if : ${{ success() }}
245
266
uses : coverallsapp/github-action@v2
0 commit comments