VoiceWake: add SSH forwarder tests

This commit is contained in:
Peter Steinberger
2025-12-07 01:55:30 +01:00
parent cf0f44823a
commit 141d2b5626
3 changed files with 41 additions and 14 deletions

View File

@@ -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"),
]
),
]
)
]),
])

View File

@@ -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?

View File

@@ -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)
}
}