diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 6a4336eb..c05c31fd 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -13,14 +13,14 @@ jobs: strategy: fail-fast: false matrix: - php-versions: ['8.2', '8.3', '8.4'] + php-versions: ['8.2', '8.3', '8.4', '8.5'] steps: - name: Setup PHP Action uses: shivammathur/setup-php@v2 with: extensions: intl php-version: "${{ matrix.php-versions }}" - coverage: xdebug + coverage: ${{ matrix.php-versions == '8.4' && 'xdebug' || 'none' }} - name: Setup MySQL uses: shogo82148/actions-setup-mysql@v1 with: @@ -40,11 +40,20 @@ jobs: run: | composer phpstan bin/rector process --dry-run - - name: "Run test suite" + - name: "Run test suite (no coverage)" + if: matrix.php-versions != '8.4' + run: | + composer dump-autoload -o + bin/kahlan + + - name: "Run test suite (with coverage)" + if: matrix.php-versions == '8.4' run: | composer dump-autoload -o mkdir -p build/logs && bin/kahlan --coverage=4 --reporter=verbose --clover=build/logs/clover.xml + - name: Upload coverage to Codecov + if: matrix.php-versions == '8.4' uses: codecov/codecov-action@v1 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/spec/Fixture/config/autoload-for-cannot-connect-to-db/error-hero-module.local.php b/spec/Fixture/config/autoload-for-cannot-connect-to-db/error-hero-module.local.php index 844cffb0..941b64c8 100644 --- a/spec/Fixture/config/autoload-for-cannot-connect-to-db/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-for-cannot-connect-to-db/error-hero-module.local.php @@ -1,10 +1,15 @@ [ @@ -20,7 +25,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Fixture/config/autoload-for-enable-display-errors/error-hero-module.local.php b/spec/Fixture/config/autoload-for-enable-display-errors/error-hero-module.local.php index 9c4d1a3a..f9066bf4 100644 --- a/spec/Fixture/config/autoload-for-enable-display-errors/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-for-enable-display-errors/error-hero-module.local.php @@ -1,10 +1,15 @@ [ @@ -20,7 +25,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Fixture/config/autoload-for-specific-error-and-exception/error-hero-module.local.php b/spec/Fixture/config/autoload-for-specific-error-and-exception/error-hero-module.local.php index 2ed167b6..077a3794 100644 --- a/spec/Fixture/config/autoload-for-specific-error-and-exception/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-for-specific-error-and-exception/error-hero-module.local.php @@ -1,7 +1,12 @@ [ @@ -10,7 +15,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Fixture/config/autoload-for-xmlhttprequest-with-non-json-message/error-hero-module.local.php b/spec/Fixture/config/autoload-for-xmlhttprequest-with-non-json-message/error-hero-module.local.php index db179b70..399e35e5 100644 --- a/spec/Fixture/config/autoload-for-xmlhttprequest-with-non-json-message/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-for-xmlhttprequest-with-non-json-message/error-hero-module.local.php @@ -1,7 +1,12 @@ [ @@ -10,7 +15,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Fixture/config/autoload-for-xmlhttprequest/error-hero-module.local.php b/spec/Fixture/config/autoload-for-xmlhttprequest/error-hero-module.local.php index 7ead9d16..0160398d 100644 --- a/spec/Fixture/config/autoload-for-xmlhttprequest/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-for-xmlhttprequest/error-hero-module.local.php @@ -1,7 +1,12 @@ [ @@ -10,7 +15,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Fixture/config/autoload-with-doctrine/error-hero-module.local.php b/spec/Fixture/config/autoload-with-doctrine/error-hero-module.local.php index 02c7369b..e9b4c674 100644 --- a/spec/Fixture/config/autoload-with-doctrine/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-with-doctrine/error-hero-module.local.php @@ -1,8 +1,13 @@ [ @@ -16,7 +21,7 @@ 'host' => '127.0.0.1', 'port' => '3306', 'driverOptions' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], ], diff --git a/spec/Fixture/config/autoload-with-enable-sendmail-with-empty-email-receivers/error-hero-module.local.php b/spec/Fixture/config/autoload-with-enable-sendmail-with-empty-email-receivers/error-hero-module.local.php index 5d9098e6..bfbbf46e 100644 --- a/spec/Fixture/config/autoload-with-enable-sendmail-with-empty-email-receivers/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-with-enable-sendmail-with-empty-email-receivers/error-hero-module.local.php @@ -1,10 +1,15 @@ [ @@ -20,7 +25,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Fixture/config/autoload-with-enable-sendmail/error-hero-module.local.php b/spec/Fixture/config/autoload-with-enable-sendmail/error-hero-module.local.php index 5bdd8c79..593d6857 100644 --- a/spec/Fixture/config/autoload-with-enable-sendmail/error-hero-module.local.php +++ b/spec/Fixture/config/autoload-with-enable-sendmail/error-hero-module.local.php @@ -1,10 +1,15 @@ [ @@ -20,7 +25,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Fixture/config/autoload/error-hero-module.local.php b/spec/Fixture/config/autoload/error-hero-module.local.php index 61b7b436..1f572ff0 100644 --- a/spec/Fixture/config/autoload/error-hero-module.local.php +++ b/spec/Fixture/config/autoload/error-hero-module.local.php @@ -2,8 +2,13 @@ namespace ErrorHeroModule\Spec\Fixture\config\autoload; +use Pdo\Mysql; use PDO; use Laminas\Db\Adapter\AdapterInterface; + +$pdoMysqlInitCommandAttr = defined(Mysql::class . '::ATTR_INIT_COMMAND') + ? Mysql::ATTR_INIT_COMMAND + : PDO::MYSQL_ATTR_INIT_COMMAND; return [ 'db' => [ @@ -12,7 +17,7 @@ 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], diff --git a/spec/Listener/MvcSpec.php b/spec/Listener/MvcSpec.php index f4b1c977..8297ac45 100644 --- a/spec/Listener/MvcSpec.php +++ b/spec/Listener/MvcSpec.php @@ -2,6 +2,7 @@ namespace ErrorHeroModule\Spec\Listener; +use Pdo\Mysql; use Closure; use ErrorException; use ErrorHeroModule\Compat\Logger; @@ -271,13 +272,17 @@ 'line' => 2 ]); + $pdoMysqlInitCommandAttr = defined(Mysql::class . '::ATTR_INIT_COMMAND') + ? Mysql::ATTR_INIT_COMMAND + : PDO::MYSQL_ATTR_INIT_COMMAND; + $dbAdapter = new Adapter([ 'username' => 'root', 'password' => '', 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ]); diff --git a/spec/Middleware/MezzioFactorySpec.php b/spec/Middleware/MezzioFactorySpec.php index f4be5d18..2dd19dc3 100644 --- a/spec/Middleware/MezzioFactorySpec.php +++ b/spec/Middleware/MezzioFactorySpec.php @@ -2,6 +2,7 @@ namespace ErrorHeroModule\Spec\Middleware; +use Pdo\Mysql; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Driver\PDO\MySql\Driver; use Doctrine\ORM\EntityManager; @@ -27,7 +28,13 @@ Psr11PimpleContainer::class => new Psr11PimpleContainer(new PimpleContainer()), ]); - given('config', fn() : array => [ + given('config', function () : array { + + $pdoMysqlInitCommandAttr = defined(Mysql::class . '::ATTR_INIT_COMMAND') + ? Mysql::ATTR_INIT_COMMAND + : PDO::MYSQL_ATTR_INIT_COMMAND; + + return [ 'db' => [ 'username' => 'root', @@ -35,7 +42,7 @@ 'driver' => 'pdo_mysql', 'dsn' => 'mysql:host=localhost;dbname=errorheromodule', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], 'adapters' => [ 'my-adapter' => [ @@ -44,7 +51,7 @@ 'username' => 'root', 'password' => '', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ], ], @@ -121,7 +128,8 @@ ], ], - ]); + ]; + }); describe('__invoke()', function (): void { diff --git a/spec/Middleware/MezzioSpec.php b/spec/Middleware/MezzioSpec.php index 3b340612..cf807672 100644 --- a/spec/Middleware/MezzioSpec.php +++ b/spec/Middleware/MezzioSpec.php @@ -2,6 +2,7 @@ namespace ErrorHeroModule\Spec\Middleware; +use Pdo\Mysql; use Closure; use ErrorException; use ErrorHeroModule\Compat\Logger; @@ -48,13 +49,17 @@ given('logger', function (): Logger { + $pdoMysqlInitCommandAttr = defined(Mysql::class . '::ATTR_INIT_COMMAND') + ? Mysql::ATTR_INIT_COMMAND + : PDO::MYSQL_ATTR_INIT_COMMAND; + $dbAdapter = new Adapter([ 'username' => 'root', 'password' => '', 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ]); @@ -177,13 +182,18 @@ ]); given('dbWriter', function (): Db { + + $pdoMysqlInitCommandAttr = defined(Mysql::class . '::ATTR_INIT_COMMAND') + ? Mysql::ATTR_INIT_COMMAND + : PDO::MYSQL_ATTR_INIT_COMMAND; + $dbAdapter = new Adapter([ 'username' => 'root', 'password' => '', 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=errorheromodule;host=127.0.0.1', 'driver_options' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ]); diff --git a/spec/ModuleSpec.php b/spec/ModuleSpec.php index 37b46f48..13e1324b 100644 --- a/spec/ModuleSpec.php +++ b/spec/ModuleSpec.php @@ -2,6 +2,7 @@ namespace ErrorHeroModule\Spec; +use Pdo\Mysql; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Driver\PDO\MySql\Driver; use Doctrine\ORM\EntityManager; @@ -159,9 +160,13 @@ $driver = Double::instance(['extends' => Driver::class, 'methods' => '__construct']); allow($driver)->toReceive('getName')->andReturn('pdo_mysql'); + $pdoMysqlInitCommandAttr = defined(Mysql::class . '::ATTR_INIT_COMMAND') + ? Mysql::ATTR_INIT_COMMAND + : PDO::MYSQL_ATTR_INIT_COMMAND; + allow($connection)->toReceive('getParams')->andReturn([ 'driverOptions' => [ - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", + $pdoMysqlInitCommandAttr => "SET NAMES 'UTF8'", ], ]); allow($connection)->toReceive('getUsername')->andReturn('root'); diff --git a/src/Compat/Logger.php b/src/Compat/Logger.php index df54c177..31533275 100644 --- a/src/Compat/Logger.php +++ b/src/Compat/Logger.php @@ -257,8 +257,6 @@ public function __construct($options = null) /** * Shutdown all writers - * - * @return void */ public function __destruct() {