First of all, the setup-php action, by default uses a "production"-type ini file. This means that error_reporting is set to E_ALL & ~E_DEPRECATED & ~E_STRICT and display_errors is set to Off.
For the purposes of CI, I'd recommend running with -1 (always include all error levels on all PHP versions) and display_errors=On to ensure all PHP notices are shown.
This is now fixed by adding the ini-values setting to setup-php.
I've also made minor other tweaks to the setup-php config:
tools: composer is not needed as Composer is installed by default.
extension: xdebug is not the correct way to enable xdebug for code coverage. coverage: xdebug is (and is Xdebug cross-version compatible for Xdebug 2 and 3).
Second of all, a change was made in PHPUnit 8.5.21 and 9.5.10, which changes the default value of the PHPUnit convertDeprecationsToExceptions attribute from true to false, meaning that tests would no longer fail on deprecation notices.
Not great for open source packages which generally need to handle deprecations in a timely matter so as not to block other packages.
So adding the convertDeprecationsToExceptions attribute and explicitly setting the value to true brings back the old behaviour and will allow for failing the tests on deprecation notices.
This (small) change needs a little explaining....
First of all, the
setup-php
action, by default uses a "production"-type ini file. This means thaterror_reporting
is set toE_ALL & ~E_DEPRECATED & ~E_STRICT
anddisplay_errors
is set toOff
.For the purposes of CI, I'd recommend running with
-1
(always include all error levels on all PHP versions) anddisplay_errors=On
to ensure all PHP notices are shown.This is now fixed by adding the
ini-values
setting tosetup-php
.I've also made minor other tweaks to the
setup-php
config:tools: composer
is not needed as Composer is installed by default.extension: xdebug
is not the correct way to enablexdebug
for code coverage.coverage: xdebug
is (and is Xdebug cross-version compatible for Xdebug 2 and 3).Second of all, a change was made in PHPUnit 8.5.21 and 9.5.10, which changes the default value of the PHPUnit
convertDeprecationsToExceptions
attribute fromtrue
tofalse
, meaning that tests would no longer fail on deprecation notices.Not great for open source packages which generally need to handle deprecations in a timely matter so as not to block other packages.
So adding the
convertDeprecationsToExceptions
attribute and explicitly setting the value totrue
brings back the old behaviour and will allow for failing the tests on deprecation notices.