Skip to main content
Glama

Peekaboo MCP

by steipete
UtilityTests.swiftβ€’4.59 kB
import Foundation import Testing @testable import peekaboo @Suite("Utility Tests") struct UtilityTests { @Suite("Logger Tests") struct LoggerTests { @Test("Logger captures messages in JSON mode") func loggerJSONMode() { let logger = Logger.shared logger.clearDebugLogs() logger.setJsonOutputMode(true) logger.debug("Debug message") logger.info("Info message") logger.warn("Warning message") logger.error("Error message") // Ensure all operations are complete logger.flush() let logs = logger.getDebugLogs() logger.setJsonOutputMode(false) #expect(logs.contains("Debug message")) #expect(logs.contains("INFO: Info message")) #expect(logs.contains("WARN: Warning message")) #expect(logs.contains("ERROR: Error message")) } @Test("Logger clears debug logs") func loggerClearLogs() { let logger = Logger.shared logger.setJsonOutputMode(true) logger.debug("Test message") Thread.sleep(forTimeInterval: 0.1) let logsBefore = logger.getDebugLogs() #expect(!logsBefore.isEmpty) logger.clearDebugLogs() Thread.sleep(forTimeInterval: 0.1) let logsAfter = logger.getDebugLogs() logger.setJsonOutputMode(false) #expect(logsAfter.isEmpty) } @Test("Logger outputs to stderr in normal mode") func loggerStderrMode() { let logger = Logger.shared // Ensure clean state logger.clearDebugLogs() Thread.sleep(forTimeInterval: 0.05) logger.setJsonOutputMode(false) Thread.sleep(forTimeInterval: 0.05) // These will output to stderr, we just verify they don't crash logger.debug("Debug to stderr") logger.info("Info to stderr") logger.warn("Warn to stderr") logger.error("Error to stderr") #expect(Bool(true)) } } @Suite("Version Tests") struct VersionTests { @Test("Version has correct format") func versionFormat() { let version = Version.current // Should be in format "Peekaboo X.Y.Z" or "Peekaboo X.Y.Z-prerelease" #expect(version.hasPrefix("Peekaboo ")) // Extract version number after "Peekaboo " let versionNumber = version.replacingOccurrences(of: "Peekaboo ", with: "") // Split by prerelease identifier first let versionParts = versionNumber.split(separator: "-", maxSplits: 1) let semverPart = String(versionParts[0]) let components = semverPart.split(separator: ".") #expect(components.count == 3) // Each component should be a number for component in components { #expect(Int(component) != nil) } } @Test("Version is not empty") func versionNotEmpty() { #expect(!Version.current.isEmpty) } } @Suite("Helper Function Tests") struct HelperFunctionTests { @Test("Date formatting for filenames") func dateFormattingForFilenames() { let date = Date(timeIntervalSince1970: 1_234_567_890) // 2009-02-13 23:31:30 UTC let formatter = ISO8601DateFormatter() formatter.formatOptions = [ .withYear, .withMonth, .withDay, .withTime, .withDashSeparatorInDate, .withColonSeparatorInTime, ] formatter.timeZone = TimeZone(secondsFromGMT: 0) let formatted = formatter.string(from: date) #expect(formatted.contains("2009-02-13")) #expect(formatted.contains("23:31:30")) } @Test("Path expansion handles tilde") func pathExpansionHandlesTilde() { let homePath = FileManager.default.homeDirectoryForCurrentUser.path let tildeDesktop = "~/Desktop" let expanded = NSString(string: tildeDesktop).expandingTildeInPath #expect(expanded == "\(homePath)/Desktop") } @Test("File URL creation") func fileURLCreation() { let path = "/tmp/test.png" let url = URL(fileURLWithPath: path) #expect(url.path == path) #expect(url.isFileURL == true) } } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/steipete/Peekaboo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server