From 971570325bc0798683ffb5dced22d13e7ee59d49 Mon Sep 17 00:00:00 2001 From: Sergei Morozov Date: Fri, 23 Aug 2019 09:10:27 -0700 Subject: [PATCH] Marked connection exception test incomplete on MySQL 8 --- .../Tests/DBAL/Functional/ExceptionTest.php | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/tests/Doctrine/Tests/DBAL/Functional/ExceptionTest.php b/tests/Doctrine/Tests/DBAL/Functional/ExceptionTest.php index 7f4a8145cfe..161a32f1111 100644 --- a/tests/Doctrine/Tests/DBAL/Functional/ExceptionTest.php +++ b/tests/Doctrine/Tests/DBAL/Functional/ExceptionTest.php @@ -3,14 +3,20 @@ namespace Doctrine\Tests\DBAL\Functional; use Doctrine\DBAL\Driver\ExceptionConverterDriver; +use Doctrine\DBAL\Driver\ServerInfoAwareConnection; use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\Exception; +use Doctrine\DBAL\Platforms\DrizzlePlatform; +use Doctrine\DBAL\Platforms\MySqlPlatform; +use Doctrine\DBAL\Platforms\PostgreSqlPlatform; +use Doctrine\DBAL\Platforms\SqlitePlatform; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Table; use Doctrine\Tests\DbalFunctionalTestCase; use Throwable; use const PHP_OS; use function array_merge; +use function assert; use function chmod; use function exec; use function file_exists; @@ -20,6 +26,7 @@ use function sys_get_temp_dir; use function touch; use function unlink; +use function version_compare; class ExceptionTest extends DbalFunctionalTestCase { @@ -289,7 +296,7 @@ public function testSyntaxErrorException() : void public function testConnectionExceptionSqLite() : void { - if ($this->connection->getDatabasePlatform()->getName() !== 'sqlite') { + if ($this->connection instanceof SqlitePlatform) { $this->markTestSkipped('Only fails this way on sqlite'); } @@ -343,18 +350,29 @@ public function testConnectionExceptionSqLite() : void */ public function testConnectionException(array $params) : void { - if ($this->connection->getDatabasePlatform()->getName() === 'sqlite') { + $platform = $this->connection->getDatabasePlatform(); + + if ($platform instanceof SqlitePlatform) { $this->markTestSkipped('Only skipped if platform is not sqlite'); } - if ($this->connection->getDatabasePlatform()->getName() === 'drizzle') { + if ($platform instanceof DrizzlePlatform) { $this->markTestSkipped('Drizzle does not always support authentication'); } - if ($this->connection->getDatabasePlatform()->getName() === 'postgresql' && isset($params['password'])) { + if ($platform instanceof PostgreSqlPlatform && isset($params['password'])) { $this->markTestSkipped('Does not work on Travis'); } + if ($platform instanceof MySqlPlatform && isset($params['user'])) { + $wrappedConnection = $this->connection->getWrappedConnection(); + assert($wrappedConnection instanceof ServerInfoAwareConnection); + + if (version_compare($wrappedConnection->getServerVersion(), '8', '>=')) { + $this->markTestIncomplete('PHP currently does not completely support MySQL 8'); + } + } + $defaultParams = $this->connection->getParams(); $params = array_merge($defaultParams, $params);