mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-08 11:45:58 +00:00
103 lines
No EOL
3 KiB
Swift
103 lines
No EOL
3 KiB
Swift
import Foundation
|
|
import Testing
|
|
@testable import VibeTunnel
|
|
|
|
@Suite("AppleScript Executor Tests", .tags(.integration))
|
|
struct AppleScriptExecutorTests {
|
|
|
|
@Test("Execute simple AppleScript")
|
|
@MainActor
|
|
func executeSimpleScript() throws {
|
|
let script = """
|
|
return "Hello from AppleScript"
|
|
"""
|
|
|
|
let result = try AppleScriptExecutor.shared.executeWithResult(script)
|
|
#expect(result == "Hello from AppleScript")
|
|
}
|
|
|
|
@Test("Execute script with math")
|
|
@MainActor
|
|
func executeScriptWithMath() throws {
|
|
let script = """
|
|
return 2 + 2
|
|
"""
|
|
|
|
let result = try AppleScriptExecutor.shared.executeWithResult(script)
|
|
#expect(result == "4")
|
|
}
|
|
|
|
@Test("Handle script error")
|
|
@MainActor
|
|
func handleScriptError() throws {
|
|
let script = """
|
|
error "This is a test error"
|
|
"""
|
|
|
|
do {
|
|
_ = try AppleScriptExecutor.shared.executeWithResult(script)
|
|
Issue.record("Expected error to be thrown")
|
|
} catch {
|
|
#expect(error.localizedDescription.contains("test error"))
|
|
}
|
|
}
|
|
|
|
@Test("Handle invalid syntax")
|
|
@MainActor
|
|
func handleInvalidSyntax() throws {
|
|
let script = """
|
|
this is not valid applescript syntax
|
|
"""
|
|
|
|
do {
|
|
_ = try AppleScriptExecutor.shared.executeWithResult(script)
|
|
Issue.record("Expected error to be thrown")
|
|
} catch {
|
|
// Should throw a syntax error
|
|
#expect(error is AppleScriptError)
|
|
}
|
|
}
|
|
|
|
@Test("Execute empty script")
|
|
@MainActor
|
|
func executeEmptyScript() throws {
|
|
let script = ""
|
|
|
|
do {
|
|
let result = try AppleScriptExecutor.shared.executeWithResult(script)
|
|
#expect(result.isEmpty || result == "missing value")
|
|
} catch {
|
|
// Empty script might throw an error, which is also acceptable
|
|
#expect(error is AppleScriptError)
|
|
}
|
|
}
|
|
|
|
@Test("Check Terminal application", .disabled("Slow test - 0.44 seconds"))
|
|
@MainActor
|
|
func checkTerminalApplication() throws {
|
|
let script = """
|
|
tell application "System Events"
|
|
return exists application process "Terminal"
|
|
end tell
|
|
"""
|
|
|
|
let result = try AppleScriptExecutor.shared.executeWithResult(script)
|
|
// Result will be "true" or "false" as a string
|
|
#expect(result == "true" || result == "false")
|
|
}
|
|
|
|
@Test("Test async execution", .disabled("Slow test - 3.5 seconds"))
|
|
func testAsyncExecution() async throws {
|
|
// Test the async method
|
|
let hasPermission = await AppleScriptExecutor.shared.checkPermission()
|
|
#expect(hasPermission == true || hasPermission == false)
|
|
}
|
|
|
|
@Test("Singleton instance")
|
|
@MainActor
|
|
func singletonInstance() {
|
|
let instance1 = AppleScriptExecutor.shared
|
|
let instance2 = AppleScriptExecutor.shared
|
|
#expect(instance1 === instance2)
|
|
}
|
|
} |