Peekaboo/peekaboo-cli/Tests/peekabooTests/PIDTargetingTests.swift
Peter Steinberger eb6bd60f20
Add PID-based application targeting (#14)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-09 00:30:10 +01:00

64 lines
No EOL
2.3 KiB
Swift

import Foundation
import AppKit
import Testing
@testable import peekaboo
@Suite("PID Targeting Tests")
struct PIDTargetingTests {
@Test("Find application by valid PID", .enabled(if: ProcessInfo.processInfo.environment["CI"] == nil))
func findByValidPID() throws {
// Get any running application
let runningApps = NSWorkspace.shared.runningApplications
guard let testApp = runningApps.first(where: { $0.localizedName != nil }) else {
Issue.record("No running applications found for testing")
return
}
let pid = testApp.processIdentifier
let identifier = "PID:\(pid)"
do {
let foundApp = try ApplicationFinder.findApplication(identifier: identifier)
#expect(foundApp.processIdentifier == pid)
#expect(foundApp.bundleIdentifier == testApp.bundleIdentifier)
} catch {
Issue.record("Failed to find application by PID: \(error)")
}
}
@Test("Invalid PID format throws error")
func invalidPIDFormat() throws {
// Test various invalid PID formats
let invalidPIDs = [
"PID:", // Missing PID number
"PID:abc", // Non-numeric PID
"PID:-123", // Negative PID
"PID:12.34", // Decimal PID
"PID:999999999" // Very large PID (likely non-existent)
]
for invalidPID in invalidPIDs {
#expect(throws: ApplicationError.self) {
_ = try ApplicationFinder.findApplication(identifier: invalidPID)
}
}
}
@Test("Non-existent PID throws notFound error")
func nonExistentPID() throws {
// Use a very high PID number that's unlikely to exist
let identifier = "PID:99999"
do {
_ = try ApplicationFinder.findApplication(identifier: identifier)
Issue.record("Expected error for non-existent PID")
} catch ApplicationError.notFound(let message) {
// The message should contain information about the PID
#expect(message.contains("99999") || message == identifier,
"Error message '\(message)' should mention PID 99999")
} catch {
Issue.record("Unexpected error: \(error)")
}
}
}