Files
terminalX/packages/TXCore/Tests/TXCoreTests/TmuxOutputDecoderTests.swift
kid aa92d0e676 初始提交:terminalX 可运行态(M0/M1/M1.5 已真机验证)
- M0: libghostty SSH 终端(渲染/输入/连接)+ 白屏修复(OutputGate) + 会话状态机/自动重连
- M1: tsnet 用户态组网 + SSH-over-tsnet(fd 桥),shell 级真机验证;R5(Go+gvisor+C+++Swift 同进程) retire
- M1.5: tmux -CC 原生 tab(MVP)
- 结构: packages/(TXCore·TXTransport), apps/TerminalX, vendor/(libghostty-spm/libssh2/mbedtls/tsnet-bridge), artifacts/
- 文档: CLAUDE.md + docs/HANDOFF.md(新会话入口)
- 环境: 认证代理→依赖 vendor 本地化;Go 在 ~/.local/go;仅模拟器/未签名
- 待续: M2 mosh, tmux 多 pane, M4 安全(host key/SE)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 10:20:46 +08:00

52 lines
1.5 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Testing
import Foundation
@testable import TXCore
@Suite("tmux %output 八进制解码")
struct TmuxOutputDecoderTests {
// API decodedecoder internal
private func decode(_ escaped: String) -> Data {
let parser = TmuxControlParser()
let events = parser.feed("%output %0 \(escaped)\n")
guard case .output(_, let data) = events.first else {
Issue.record("期望 .output得到 \(events)")
return Data()
}
return data
}
@Test("普通字符原样通过")
func plain() {
#expect(decode("hello") == Data("hello".utf8))
}
@Test("空格不转义,原样保留")
func rawSpace() {
#expect(decode("hello\\040world") == Data("hello world".utf8))
// payload
#expect(decode("a b") == Data("a b".utf8))
}
@Test("控制字符八进制还原")
func controlBytes() {
#expect(decode("line\\015\\012") == Data([0x6C, 0x69, 0x6E, 0x65, 0x0D, 0x0A]))
}
@Test("反斜杠自身 \\134")
func backslash() {
#expect(decode("a\\134b") == Data([0x61, 0x5C, 0x62]))
}
@Test("不完整转义序列原样保留")
func malformedEscape() {
// +
#expect(decode("x\\12") == Data("x\\12".utf8))
}
@Test("非八进制数字8/9不视为转义")
func nonOctalDigits() {
#expect(decode("\\189") == Data("\\189".utf8))
}
}