38 lines
1.3 KiB
Swift
38 lines
1.3 KiB
Swift
// SPDX-FileCopyrightText: 2026 Kaede Akino
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
import Dispatch
|
|
import Logging
|
|
import Testing
|
|
|
|
@testable import TermindRemoteInfrastructure
|
|
|
|
@Suite
|
|
struct SSHConnectionWorkerLifecycleTests {
|
|
@Test func lastReferenceCanBeReleasedOnTheConnectionQueue() async {
|
|
let queue = DispatchQueue(label: "termind.tests.ssh.connection")
|
|
await withCheckedContinuation { continuation in
|
|
queue.async {
|
|
var worker: SSHConnectionWorker? = SSHConnectionWorker(
|
|
logger: Logger(label: "termind.tests"), maxSessionsPolicy: SSHMaxSessionsPolicy(), queue: queue)
|
|
weak let released = worker
|
|
#expect(released != nil)
|
|
worker = nil
|
|
#expect(released == nil)
|
|
continuation.resume()
|
|
}
|
|
}
|
|
}
|
|
|
|
@Test func lastReferenceCanBeReleasedOutsideTheConnectionQueue() {
|
|
let queue = DispatchQueue(label: "termind.tests.ssh.connection")
|
|
dispatchPrecondition(condition: .notOnQueue(queue))
|
|
var worker: SSHConnectionWorker? = SSHConnectionWorker(
|
|
logger: Logger(label: "termind.tests"), maxSessionsPolicy: SSHMaxSessionsPolicy(), queue: queue)
|
|
weak let released = worker
|
|
#expect(released != nil)
|
|
worker = nil
|
|
#expect(released == nil)
|
|
}
|
|
}
|