Skip to content

Commit f7e9fe9

Browse files
committed
Include function return code in error message
1 parent 2ee9030 commit f7e9fe9

File tree

2 files changed

+48
-6
lines changed

2 files changed

+48
-6
lines changed

SQLite/Core/Connection.swift

+6-5
Original file line numberDiff line numberDiff line change
@@ -709,13 +709,14 @@ extension Result : CustomStringConvertible {
709709

710710
public var description: String {
711711
switch self {
712-
case let .error(message, _, statement):
713-
guard let statement = statement else { return message }
714-
715-
return "\(message) (\(statement))"
712+
case let .error(message, errorCode, statement):
713+
if let statement = statement {
714+
return "\(message) (\(statement)) (code: \(errorCode))"
715+
} else {
716+
return "\(message) (code: \(errorCode))"
717+
}
716718
}
717719
}
718-
719720
}
720721

721722
#if !SQLITE_SWIFT_SQLCIPHER

SQLiteTests/ConnectionTests.swift

+42-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import XCTest
2-
import SQLite
2+
@testable import SQLite
3+
34
#if SQLITE_SWIFT_STANDALONE
45
import sqlite3
56
#elseif SQLITE_SWIFT_SQLCIPHER
@@ -341,3 +342,43 @@ class ConnectionTests : SQLiteTestCase {
341342
}
342343

343344
}
345+
346+
347+
class ResultTests : XCTestCase {
348+
let connection = try! Connection(.inMemory)
349+
350+
func test_init_with_ok_code_returns_nil() {
351+
XCTAssertNil(Result(errorCode: SQLITE_OK, connection: connection, statement: nil) as Result?)
352+
}
353+
354+
func test_init_with_row_code_returns_nil() {
355+
XCTAssertNil(Result(errorCode: SQLITE_ROW, connection: connection, statement: nil) as Result?)
356+
}
357+
358+
func test_init_with_done_code_returns_nil() {
359+
XCTAssertNil(Result(errorCode: SQLITE_DONE, connection: connection, statement: nil) as Result?)
360+
}
361+
362+
func test_init_with_other_code_returns_error() {
363+
if case .some(.error(let message, let code, let statement)) =
364+
Result(errorCode: SQLITE_MISUSE, connection: connection, statement: nil) {
365+
XCTAssertEqual("not an error", message)
366+
XCTAssertEqual(SQLITE_MISUSE, code)
367+
XCTAssertNil(statement)
368+
XCTAssert(self.connection === connection)
369+
} else {
370+
XCTFail()
371+
}
372+
}
373+
374+
func test_description_contains_error_code() {
375+
XCTAssertEqual("not an error (code: 21)",
376+
Result(errorCode: SQLITE_MISUSE, connection: connection, statement: nil)?.description)
377+
}
378+
379+
func test_description_contains_statement_and_error_code() {
380+
let statement = try! Statement(connection, "SELECT 1")
381+
XCTAssertEqual("not an error (SELECT 1) (code: 21)",
382+
Result(errorCode: SQLITE_MISUSE, connection: connection, statement: statement)?.description)
383+
}
384+
}

0 commit comments

Comments
 (0)