import Foundation import Testing @testable import Clawdbot @Suite struct FileHandleSafeReadTests { @Test func readToEndSafelyReturnsEmptyForClosedHandle() { let pipe = Pipe() let handle = pipe.fileHandleForReading try? handle.close() let data = handle.readToEndSafely() #expect(data.isEmpty) } @Test func readSafelyUpToCountReturnsEmptyForClosedHandle() { let pipe = Pipe() let handle = pipe.fileHandleForReading try? handle.close() let data = handle.readSafely(upToCount: 16) #expect(data.isEmpty) } @Test func readToEndSafelyReadsPipeContents() { let pipe = Pipe() let writeHandle = pipe.fileHandleForWriting writeHandle.write(Data("hello".utf8)) try? writeHandle.close() let data = pipe.fileHandleForReading.readToEndSafely() #expect(String(data: data, encoding: .utf8) == "hello") } @Test func readSafelyUpToCountReadsIncrementally() { let pipe = Pipe() let writeHandle = pipe.fileHandleForWriting writeHandle.write(Data("hello world".utf8)) try? writeHandle.close() let readHandle = pipe.fileHandleForReading let first = readHandle.readSafely(upToCount: 5) let second = readHandle.readSafely(upToCount: 32) #expect(String(data: first, encoding: .utf8) == "hello") #expect(String(data: second, encoding: .utf8) == " world") } }