Skip to content

Commit 2e1e553

Browse files
authored
Merge pull request #174 from tomerd/fix/sqlite-timeout
fix error in busy timeout units
2 parents c98cfc2 + 3c39525 commit 2e1e553

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

Sources/TSCUtility/SQLite.swift

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public struct SQLite {
4646
}
4747
self.db = db
4848
try Self.checkError("Unable to configure database") { sqlite3_extended_result_codes(db, 1) }
49-
try Self.checkError("Unable to configure database") { sqlite3_busy_timeout(db, self.configuration.busyTimeoutSeconds) }
49+
try Self.checkError("Unable to configure database") { sqlite3_busy_timeout(db, self.configuration.busyTimeoutMilliseconds) }
5050
}
5151

5252
@available(*, deprecated, message: "use init(location:configuration) instead")
@@ -89,10 +89,29 @@ public struct SQLite {
8989
public typealias SQLiteExecCallback = ([Column]) -> Void
9090

9191
public struct Configuration {
92-
public var busyTimeoutSeconds: Int32
92+
public var busyTimeoutMilliseconds: Int32
9393

9494
public init() {
95-
self.busyTimeoutSeconds = 5
95+
self.busyTimeoutMilliseconds = 5000
96+
}
97+
98+
// FIXME: deprecated 12/2020, remove once clients migrated over
99+
@available(*, deprecated, message: "use busyTimeout instead")
100+
public var busyTimeoutSeconds: Int32 {
101+
get {
102+
self._busyTimeoutSeconds
103+
} set {
104+
self._busyTimeoutSeconds = newValue
105+
}
106+
}
107+
108+
// so tests dont warn
109+
internal var _busyTimeoutSeconds: Int32 {
110+
get {
111+
return Int32(truncatingIfNeeded: Int(Double(self.busyTimeoutMilliseconds) / 1000))
112+
} set {
113+
self.busyTimeoutMilliseconds = newValue * 1000
114+
}
96115
}
97116
}
98117

Tests/TSCUtilityTests/SQLiteTests.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import TSCBasic
1212
import TSCTestSupport
13-
import TSCUtility
13+
@testable import TSCUtility
1414
import XCTest
1515

1616
class SQLiteTests: XCTestCase {
@@ -71,4 +71,13 @@ class SQLiteTests: XCTestCase {
7171
XCTAssertNotNil(row, "expected results")
7272
}
7373
}
74+
75+
func testConfiguration() throws {
76+
var configuration = SQLite.Configuration()
77+
78+
let timeout = Int32.random(in: 1000 ... 10000)
79+
configuration.busyTimeoutMilliseconds = timeout
80+
XCTAssertEqual(configuration.busyTimeoutMilliseconds, timeout)
81+
XCTAssertEqual(configuration._busyTimeoutSeconds, Int32(Double(timeout) / 1000))
82+
}
7483
}

0 commit comments

Comments
 (0)