VoiceWake: add SSH forwarder tests
This commit is contained in:
@@ -24,8 +24,7 @@ let package = Package(
|
||||
dependencies: [],
|
||||
swiftSettings: [
|
||||
.enableUpcomingFeature("StrictConcurrency"),
|
||||
]
|
||||
),
|
||||
]),
|
||||
.executableTarget(
|
||||
name: "Clawdis",
|
||||
dependencies: [
|
||||
@@ -40,8 +39,7 @@ let package = Package(
|
||||
],
|
||||
swiftSettings: [
|
||||
.enableUpcomingFeature("StrictConcurrency"),
|
||||
]
|
||||
),
|
||||
]),
|
||||
.executableTarget(
|
||||
name: "ClawdisCLI",
|
||||
dependencies: [
|
||||
@@ -50,15 +48,12 @@ let package = Package(
|
||||
],
|
||||
swiftSettings: [
|
||||
.enableUpcomingFeature("StrictConcurrency"),
|
||||
]
|
||||
),
|
||||
]),
|
||||
.testTarget(
|
||||
name: "ClawdisIPCTests",
|
||||
dependencies: ["ClawdisIPC"],
|
||||
dependencies: ["ClawdisIPC", "Clawdis"],
|
||||
swiftSettings: [
|
||||
.enableUpcomingFeature("StrictConcurrency"),
|
||||
.enableExperimentalFeature("SwiftTesting"),
|
||||
]
|
||||
),
|
||||
]
|
||||
)
|
||||
]),
|
||||
])
|
||||
|
||||
@@ -60,7 +60,7 @@ enum VoiceWakeForwarder {
|
||||
await self.wait(process, timeout: config.timeout)
|
||||
}
|
||||
|
||||
private static func renderedCommand(template: String, transcript: String) -> String {
|
||||
static func renderedCommand(template: String, transcript: String) -> String {
|
||||
let escaped = Self.shellEscape(transcript)
|
||||
if template.contains("${text}") {
|
||||
return template.replacingOccurrences(of: "${text}", with: escaped)
|
||||
@@ -68,7 +68,7 @@ enum VoiceWakeForwarder {
|
||||
return template
|
||||
}
|
||||
|
||||
private static func shellEscape(_ text: String) -> String {
|
||||
static func shellEscape(_ text: String) -> String {
|
||||
// Single-quote based shell escaping.
|
||||
let replaced = text.replacingOccurrences(of: "'", with: "'\\''")
|
||||
return "'\(replaced)'"
|
||||
@@ -95,7 +95,7 @@ enum VoiceWakeForwarder {
|
||||
}
|
||||
}
|
||||
|
||||
private static func parse(target: String) -> (user: String?, host: String, port: Int)? {
|
||||
static func parse(target: String) -> (user: String?, host: String, port: Int)? {
|
||||
guard !target.isEmpty else { return nil }
|
||||
var remainder = target
|
||||
var user: String?
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
import Testing
|
||||
@testable import Clawdis
|
||||
|
||||
@Suite struct VoiceWakeForwarderTests {
|
||||
@Test func parsesUserHostPort() {
|
||||
let parsed = VoiceWakeForwarder.parse(target: "user@example.local:2222")
|
||||
#expect(parsed?.user == "user")
|
||||
#expect(parsed?.host == "example.local")
|
||||
#expect(parsed?.port == 2222)
|
||||
}
|
||||
|
||||
@Test func parsesHostOnlyDefaultsPort() {
|
||||
let parsed = VoiceWakeForwarder.parse(target: "primary.local")
|
||||
#expect(parsed?.user == nil)
|
||||
#expect(parsed?.host == "primary.local")
|
||||
#expect(parsed?.port == defaultVoiceWakeForwardPort)
|
||||
}
|
||||
|
||||
@Test func renderedCommandReplacesPlaceholderAndEscapes() {
|
||||
let template = "clawdis-mac agent --message \"${text}\""
|
||||
let command = VoiceWakeForwarder.renderedCommand(template: template, transcript: "hi i'm here")
|
||||
#expect(command.contains("clawdis-mac agent"))
|
||||
#expect(command.contains("'hi i'\\''m here'"))
|
||||
#expect(!command.contains("${text}"))
|
||||
}
|
||||
|
||||
@Test func renderedCommandPassthroughWhenNoPlaceholder() {
|
||||
let template = "echo noop"
|
||||
let command = VoiceWakeForwarder.renderedCommand(template: template, transcript: "ignored")
|
||||
#expect(command == template)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user