Skip to content

Commit

Permalink
Resolve test issues with SQLCipher
Browse files Browse the repository at this point in the history
Note: SQLCipher3 will have the new column rename method exposed, but it
will throw an error at runtime if used.
  • Loading branch information
gjeck committed Jan 24, 2020
1 parent 09087bd commit d14ac3e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 26 deletions.
12 changes: 8 additions & 4 deletions GRDB/QueryInterface/Schema/TableDefinition.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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] = []
Expand Down
29 changes: 7 additions & 22 deletions Tests/GRDBTests/TableDefinitionTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()
Expand Down

0 comments on commit d14ac3e

Please sign in to comment.