Add fresh default sessions and terminal status handling
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled

This commit is contained in:
Codex
2026-06-11 09:41:46 -04:00
parent 92f43df046
commit 0eca4f1cf4
10 changed files with 236 additions and 19 deletions
+73
View File
@@ -68,6 +68,8 @@ fn attach_once(dir: &tempfile::TempDir, port: u16, cache: bool) -> std::process:
let mut cmd = Command::new(client);
cmd.arg("--local-auth")
.arg("--attach-only")
.arg("--session")
.arg("default")
.arg("--dosh-port")
.arg(port.to_string())
.arg("local")
@@ -388,6 +390,77 @@ fn resize_updates_pty_size() {
);
}
#[test]
fn pty_exit_sends_closed_frame() {
let dir = tempfile::tempdir().unwrap();
let port = free_udp_port();
let config = write_server_config(&dir, port);
let mut server = start_server(&dir, &config);
let (socket, bootstrap, ok) = direct_attach(&config, port, "read-write");
let input = Input {
bytes: b"exit\n".to_vec(),
};
send_encrypted(
&socket,
port,
PacketKind::Input,
ok.client_id,
2,
0,
&bootstrap.session_key,
&protocol::to_body(&input).unwrap(),
);
let mut closed = false;
let deadline = std::time::Instant::now() + Duration::from_secs(3);
while std::time::Instant::now() < deadline {
if let Some((_header, frame)) = recv_frame(&socket, &bootstrap.session_key) {
if frame.closed {
closed = true;
break;
}
}
}
let _ = server.kill();
let _ = server.wait();
assert!(closed, "expected closed frame after shell exit");
}
#[test]
fn pty_sets_terminal_environment() {
let dir = tempfile::tempdir().unwrap();
let port = free_udp_port();
let config = write_server_config(&dir, port);
let mut server = start_server(&dir, &config);
let (socket, bootstrap, ok) = direct_attach(&config, port, "read-write");
let input = Input {
bytes: b"printf \"$TERM\\n\"\n".to_vec(),
};
send_encrypted(
&socket,
port,
PacketKind::Input,
ok.client_id,
2,
0,
&bootstrap.session_key,
&protocol::to_body(&input).unwrap(),
);
let text = collect_frame_text(&socket, &bootstrap.session_key, 2000);
let _ = server.kill();
let _ = server.wait();
assert!(
text.contains("xterm-256color"),
"expected TERM=xterm-256color, got {text:?}"
);
}
#[test]
fn resume_updates_udp_endpoint_for_roaming() {
let dir = tempfile::tempdir().unwrap();