mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
a781761eda
## Why Windows unified-exec TTY input did not behave like the non-Windows PTY path. ConPTY sessions could receive the wrong line ending or mishandle backspace, especially when sending input to a foreground program through PowerShell or cmd. The local, legacy restricted, and elevated paths also handled this normalization separately. ## What changed - share one stateful Windows TTY input normalizer across local, legacy restricted, and elevated runner paths - translate LF and split CRLF into one Windows terminal Enter, encode backspace as DEL, and preserve UTF-8 and control bytes such as Ctrl-C - add Windows integration coverage for Unicode input, backspace, Enter, and PowerShell foreground-child Ctrl-C behavior ## Validation - `just test -p codex-utils-pty` (13 tests passed; the Unicode integration test retried once) - the Unicode integration test passed five consecutive runs with retries disabled - integration coverage sends `cafeé 漢字` through cmd and PowerShell and verifies that Ctrl-C interrupts a running PowerShell foreground child
17 lines
706 B
Rust
17 lines
706 B
Rust
use super::WindowsTtyInputNormalizer;
|
|
use pretty_assertions::assert_eq;
|
|
|
|
#[test]
|
|
fn normalizes_terminal_input_without_changing_text_or_ctrl_c() {
|
|
let mut normalizer = WindowsTtyInputNormalizer::default();
|
|
assert_eq!(normalizer.normalize(b"first\n"), b"first\r");
|
|
assert_eq!(normalizer.normalize(b"second\r"), b"second\r");
|
|
assert_eq!(normalizer.normalize(b"\nthird\r\n"), b"third\r");
|
|
|
|
let mut input_with_controls = "cafeé 漢字".as_bytes().to_vec();
|
|
input_with_controls.extend_from_slice(b"\x08\x03");
|
|
let mut expected = "cafeé 漢字".as_bytes().to_vec();
|
|
expected.extend_from_slice(b"\x7f\x03");
|
|
assert_eq!(normalizer.normalize(&input_with_controls), expected);
|
|
}
|