mirror of
https://github.com/yiisoft/yii2.git
synced 2025-12-12 17:30:57 +08:00
Fix testExceptionContainsRawQuery() in ConnectionTest class in SQLite. (#20653)
This commit is contained in:
@@ -397,14 +397,21 @@ abstract class ConnectionTest extends DatabaseTestCase
|
|||||||
/**
|
/**
|
||||||
* @param Connection $connection
|
* @param Connection $connection
|
||||||
*/
|
*/
|
||||||
private function runExceptionTest($connection): void
|
private function runExceptionTest(Connection $connection): void
|
||||||
{
|
{
|
||||||
$thrown = false;
|
$thrown = false;
|
||||||
|
$sqlAssertLog = 'INSERT INTO qlog1(a) VALUES(1);';
|
||||||
|
|
||||||
|
if ($connection->getDriverName() === 'sqlite') {
|
||||||
|
// SQLite shows placeholders (`:a`), other drivers show values (`1`) in error messages.
|
||||||
|
$sqlAssertLog = 'INSERT INTO qlog1(a) VALUES(:a);';
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$connection->createCommand('INSERT INTO qlog1(a) VALUES(:a);', [':a' => 1])->execute();
|
$connection->createCommand('INSERT INTO qlog1(a) VALUES(:a);', [':a' => 1])->execute();
|
||||||
} catch (\yii\db\Exception $e) {
|
} catch (\yii\db\Exception $e) {
|
||||||
$this->assertStringContainsString(
|
$this->assertStringContainsString(
|
||||||
'INSERT INTO qlog1(a) VALUES(1);',
|
$sqlAssertLog,
|
||||||
$e->getMessage(),
|
$e->getMessage(),
|
||||||
'Exception message should contain raw SQL query: ' . (string) $e
|
'Exception message should contain raw SQL query: ' . (string) $e
|
||||||
);
|
);
|
||||||
@@ -413,11 +420,18 @@ abstract class ConnectionTest extends DatabaseTestCase
|
|||||||
$this->assertTrue($thrown, 'An exception should have been thrown by the command.');
|
$this->assertTrue($thrown, 'An exception should have been thrown by the command.');
|
||||||
|
|
||||||
$thrown = false;
|
$thrown = false;
|
||||||
|
$sqlAssertLog = 'SELECT * FROM qlog1 WHERE id=1 ORDER BY nonexistingcolumn;';
|
||||||
|
|
||||||
|
if ($connection->getDriverName() === 'sqlite') {
|
||||||
|
// SQLite shows placeholders (`:a`), other drivers show values (`1`) in error messages.
|
||||||
|
$sqlAssertLog = 'SELECT * FROM qlog1 WHERE id=:a ORDER BY nonexistingcolumn;';
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$connection->createCommand('SELECT * FROM qlog1 WHERE id=:a ORDER BY nonexistingcolumn;', [':a' => 1])->queryAll();
|
$connection->createCommand('SELECT * FROM qlog1 WHERE id=:a ORDER BY nonexistingcolumn;', [':a' => 1])->queryAll();
|
||||||
} catch (\yii\db\Exception $e) {
|
} catch (\yii\db\Exception $e) {
|
||||||
$this->assertStringContainsString(
|
$this->assertStringContainsString(
|
||||||
'SELECT * FROM qlog1 WHERE id=1 ORDER BY nonexistingcolumn;',
|
$sqlAssertLog,
|
||||||
$e->getMessage(),
|
$e->getMessage(),
|
||||||
'Exception message should contain raw SQL query: ' . (string) $e,
|
'Exception message should contain raw SQL query: ' . (string) $e,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
namespace yiiunit\framework\db\sqlite;
|
namespace yiiunit\framework\db\sqlite;
|
||||||
|
|
||||||
use Exception;
|
|
||||||
use Yii;
|
use Yii;
|
||||||
use yii\db\Connection;
|
use yii\db\Connection;
|
||||||
|
use yii\db\Exception;
|
||||||
use yii\db\Transaction;
|
use yii\db\Transaction;
|
||||||
use yiiunit\data\ar\ActiveRecord;
|
use yiiunit\data\ar\ActiveRecord;
|
||||||
use yiiunit\data\ar\Customer;
|
use yiiunit\data\ar\Customer;
|
||||||
@@ -218,9 +218,4 @@ class ConnectionTest extends \yiiunit\framework\db\ConnectionTest
|
|||||||
|
|
||||||
$connection->close();
|
$connection->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testExceptionContainsRawQuery(): void
|
|
||||||
{
|
|
||||||
$this->markTestSkipped('This test does not work on sqlite because preparing the failing query fails');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user