Skip to content

Commit 3bb586b

Browse files
committed
Reflect non-strict mode differences in tests for SQLite < 3.37.0
1 parent b4ca542 commit 3bb586b

File tree

1 file changed

+36
-12
lines changed

1 file changed

+36
-12
lines changed

tests/WP_SQLite_Driver_Tests.php

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10142,10 +10142,17 @@ public function testCastValuesOnInsert(): void {
1014210142
$this->assertQuery( "INSERT INTO t VALUES ('2')" );
1014310143
$this->assertQuery( "INSERT INTO t VALUES ('3.0')" );
1014410144

10145-
// TODO: These are supported in MySQL:
10146-
$this->assertQueryError( "INSERT INTO t VALUES ('4.5')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10147-
$this->assertQueryError( 'INSERT INTO t VALUES (0x05)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10148-
$this->assertQueryError( "INSERT INTO t VALUES (x'06')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10145+
$is_legacy_sqlite = version_compare( $this->engine->get_sqlite_version(), WP_PDO_MySQL_On_SQLite::MINIMUM_SQLITE_VERSION, '<' );
10146+
if ( $is_legacy_sqlite ) {
10147+
$this->assertQuery( "INSERT INTO t VALUES ('4.5')" );
10148+
$this->assertQuery( 'INSERT INTO t VALUES (0x05)' );
10149+
$this->assertQuery( "INSERT INTO t VALUES (x'06')" );
10150+
} else {
10151+
// TODO: These are supported in MySQL:
10152+
$this->assertQueryError( "INSERT INTO t VALUES ('4.5')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10153+
$this->assertQueryError( 'INSERT INTO t VALUES (0x05)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10154+
$this->assertQueryError( "INSERT INTO t VALUES (x'06')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10155+
}
1014910156

1015010157
$result = $this->assertQuery( 'SELECT * FROM t' );
1015110158
$this->assertSame( null, $result[0]->value );
@@ -10170,8 +10177,13 @@ public function testCastValuesOnInsert(): void {
1017010177
$this->assertQuery( "INSERT INTO t VALUES ('5')" );
1017110178

1017210179
// TODO: These are supported in MySQL:
10173-
$this->assertQueryError( 'INSERT INTO t VALUES (0x06)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10174-
$this->assertQueryError( "INSERT INTO t VALUES (x'07')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10180+
if ( $is_legacy_sqlite ) {
10181+
$this->assertQuery( 'INSERT INTO t VALUES (0x06)' );
10182+
$this->assertQuery( "INSERT INTO t VALUES (x'07')" );
10183+
} else {
10184+
$this->assertQueryError( 'INSERT INTO t VALUES (0x06)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10185+
$this->assertQueryError( "INSERT INTO t VALUES (x'07')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10186+
}
1017510187

1017610188
$result = $this->assertQuery( 'SELECT * FROM t' );
1017710189
$this->assertSame( null, $result[0]->value );
@@ -10637,10 +10649,17 @@ public function testCastValuesOnUpdate(): void {
1063710649
$this->assertQuery( "UPDATE t SET value = '3.0'" );
1063810650
$this->assertSame( '3', $this->assertQuery( 'SELECT * FROM t' )[0]->value );
1063910651

10640-
// TODO: These are supported in MySQL:
10641-
$this->assertQueryError( "UPDATE t SET value = '4.5'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10642-
$this->assertQueryError( 'UPDATE t SET value = 0x05', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10643-
$this->assertQueryError( "UPDATE t SET value = x'06'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10652+
$is_legacy_sqlite = version_compare( $this->engine->get_sqlite_version(), WP_PDO_MySQL_On_SQLite::MINIMUM_SQLITE_VERSION, '<' );
10653+
if ( $is_legacy_sqlite ) {
10654+
$this->assertQuery( "UPDATE t SET value = '4.5'" );
10655+
$this->assertQuery( 'UPDATE t SET value = 0x05' );
10656+
$this->assertQuery( "UPDATE t SET value = x'06'" );
10657+
} else {
10658+
// TODO: These are supported in MySQL:
10659+
$this->assertQueryError( "UPDATE t SET value = '4.5'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10660+
$this->assertQueryError( 'UPDATE t SET value = 0x05', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10661+
$this->assertQueryError( "UPDATE t SET value = x'06'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10662+
}
1064410663

1064510664
$this->assertQuery( 'DROP TABLE t' );
1064610665

@@ -10676,8 +10695,13 @@ public function testCastValuesOnUpdate(): void {
1067610695
$this->assertSame( PHP_VERSION_ID < 80100 ? '5.0' : '5', $this->assertQuery( 'SELECT * FROM t' )[0]->value );
1067710696

1067810697
// TODO: These are supported in MySQL:
10679-
$this->assertQueryError( 'UPDATE t SET value = 0x06', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10680-
$this->assertQueryError( "UPDATE t SET value = x'07'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10698+
if ( $is_legacy_sqlite ) {
10699+
$this->assertQuery( 'UPDATE t SET value = 0x06' );
10700+
$this->assertQuery( "UPDATE t SET value = x'07'" );
10701+
} else {
10702+
$this->assertQueryError( 'UPDATE t SET value = 0x06', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10703+
$this->assertQueryError( "UPDATE t SET value = x'07'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10704+
}
1068110705

1068210706
$this->assertQuery( 'DROP TABLE t' );
1068310707

0 commit comments

Comments
 (0)