aboutsummaryrefslogtreecommitdiff
path: root/src/client/tests/mod.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-02 16:09:19 +0300
committerGitHub <noreply@github.com>2026-09-02 16:09:19 +0300
commitd08e44686d8b19bd9555cc99ec9068d9fde05f16 (patch)
treeca2f34d2117efbf770095c437f9d6402c24d9fb3 /src/client/tests/mod.rs
parent8633a398e653eee47b375c963996c78a8a14aa48 (diff)
fix(client): detach when terminal geometry is unavailable (#3531)
refs #3519
Diffstat (limited to 'src/client/tests/mod.rs')
-rw-r--r--src/client/tests/mod.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/client/tests/mod.rs b/src/client/tests/mod.rs
index d8f71a84..5d789444 100644
--- a/src/client/tests/mod.rs
+++ b/src/client/tests/mod.rs
@@ -18,6 +18,36 @@ fn resize_signal_reports_even_when_polled_size_is_unchanged() {
}
#[test]
+fn unavailable_terminal_grid_is_not_fabricated() {
+ let reported_cell_size = AtomicU64::new(0);
+ let err = current_terminal_geometry_with(false, false, &reported_cell_size, None, None, || {
+ Err(io::Error::new(
+ io::ErrorKind::NotConnected,
+ "terminal is gone",
+ ))
+ })
+ .expect_err("an unavailable terminal must not produce fallback geometry");
+
+ assert_eq!(err.kind(), io::ErrorKind::NotConnected);
+}
+
+#[test]
+fn missing_pixel_geometry_keeps_a_valid_terminal_grid() {
+ let reported_cell_size = AtomicU64::new(0);
+ let geometry = current_terminal_geometry_with(
+ true,
+ true,
+ &reported_cell_size,
+ Some((9, 18)),
+ None,
+ || Ok((80, 24)),
+ )
+ .expect("grid geometry remains valid without pixel dimensions");
+
+ assert_eq!(geometry, (80, 24, 9, 18, false));
+}
+
+#[test]
fn direct_graphics_profile_is_narrow_and_transport_safe() {
for (program, term, kitty, expected) in [
("ghostty", "", false, true),