From d14ac3e8d3ca4c9cd1ce6cc0fb6fd1820cdd0b17 Mon Sep 17 00:00:00 2001 From: gjeck Date: Fri, 24 Jan 2020 09:22:43 -0800 Subject: [PATCH] Resolve test issues with SQLCipher Note: SQLCipher3 will have the new column rename method exposed, but it will throw an error at runtime if used. --- .../Schema/TableDefinition.swift | 12 +++++--- Tests/GRDBTests/TableDefinitionTests.swift | 29 +++++-------------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/GRDB/QueryInterface/Schema/TableDefinition.swift b/GRDB/QueryInterface/Schema/TableDefinition.swift index ee038ab250..f61d2faae4 100644 --- a/GRDB/QueryInterface/Schema/TableDefinition.swift +++ b/GRDB/QueryInterface/Schema/TableDefinition.swift @@ -687,7 +687,7 @@ public final class TableAlteration { return column } - #if GRDBCUSTOMSQLITE + #if GRDBCUSTOMSQLITE || GRDBCipher /// Renames a column in a table. /// /// try db.alter(table: "player") { t in @@ -699,9 +699,9 @@ public final class TableAlteration { /// - parameter name: the column name to rename. /// - parameter newName: the new name of the column. public func rename(column name: String, to newName: String) { - alterations.append(.rename(old: name, new: newName)) + _rename(column: name, to: newName) } - #elseif !os(OSX) + #else /// Renames a column in a table. /// /// try db.alter(table: "player") { t in @@ -714,9 +714,13 @@ public final class TableAlteration { /// - parameter newName: the new name of the column. @available(iOS 13.0, tvOS 13.0, watchOS 6.0, *) public func rename(column name: String, to newName: String) { - alterations.append(.rename(old: name, new: newName)) + _rename(column: name, to: newName) } #endif + + private func _rename(column name: String, to newName: String) { + alterations.append(.rename(old: name, new: newName)) + } fileprivate func sql(_ db: Database) throws -> String { var statements: [String] = [] diff --git a/Tests/GRDBTests/TableDefinitionTests.swift b/Tests/GRDBTests/TableDefinitionTests.swift index 94202fad0f..69f2c1d72d 100644 --- a/Tests/GRDBTests/TableDefinitionTests.swift +++ b/Tests/GRDBTests/TableDefinitionTests.swift @@ -496,29 +496,15 @@ class TableDefinitionTests: GRDBTestCase { } } - #if GRDBCUSTOMSQLITE func testAlterTableRenameColumn() throws { - let dbQueue = try makeDatabaseQueue() - try dbQueue.inDatabase { db in - try db.create(table: "test") { t in - t.column("a", .text) - } - - sqlQueries.removeAll() - try db.alter(table: "test") { t in - t.rename(column: "a", to: "b") - t.add(column: "c") - t.rename(column: "c", to: "d") - } - - assertEqualSQL(sqlQueries[sqlQueries.count - 3], "ALTER TABLE \"test\" RENAME COLUMN \"a\" TO \"b\"") - assertEqualSQL(sqlQueries[sqlQueries.count - 2], "ALTER TABLE \"test\" ADD COLUMN \"c\"") - assertEqualSQL(sqlQueries[sqlQueries.count - 1], "ALTER TABLE \"test\" RENAME COLUMN \"c\" TO \"d\"") + guard sqlite3_libversion_number() >= 3025000 else { + return } - } - #elseif !os(OSX) - @available(iOS 13.0, tvOS 13.0, watchOS 6.0, *) - func testAlterTableRenameColumn() throws { + #if !GRDBCUSTOMSQLITE && !GRDBCIPHER + guard #available(iOS 13.0, tvOS 13.0, watchOS 6.0, *) else { + return + } + #endif let dbQueue = try makeDatabaseQueue() try dbQueue.inDatabase { db in try db.create(table: "test") { t in @@ -537,7 +523,6 @@ class TableDefinitionTests: GRDBTestCase { assertEqualSQL(sqlQueries[sqlQueries.count - 1], "ALTER TABLE \"test\" RENAME COLUMN \"c\" TO \"d\"") } } - #endif func testDropTable() throws { let dbQueue = try makeDatabaseQueue()