import Foundation import Testing @testable import Clawdbot @Suite(.serialized) @MainActor struct CLIInstallerTests { @Test func installedLocationFindsExecutable() throws { let fm = FileManager() let root = fm.temporaryDirectory.appendingPathComponent( "clawdbot-cli-installer-\(UUID().uuidString)") defer { try? fm.removeItem(at: root) } let binDir = root.appendingPathComponent("bin") try fm.createDirectory(at: binDir, withIntermediateDirectories: true) let cli = binDir.appendingPathComponent("clawdbot") fm.createFile(atPath: cli.path, contents: Data()) try fm.setAttributes([.posixPermissions: 0o755], ofItemAtPath: cli.path) let found = CLIInstaller.installedLocation( searchPaths: [binDir.path], fileManager: fm) #expect(found == cli.path) try fm.removeItem(at: cli) fm.createFile(atPath: cli.path, contents: Data()) try fm.setAttributes([.posixPermissions: 0o644], ofItemAtPath: cli.path) let missing = CLIInstaller.installedLocation( searchPaths: [binDir.path], fileManager: fm) #expect(missing == nil) } }