diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-31 23:03:11 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-31 23:03:11 +0300 |
| commit | e857710d73ad660d17ce39fa3201a39aa49f6932 (patch) | |
| tree | 7fa2db20fc6c4e78b9d182af449784ed48515c9e /tests | |
| parent | 5f97b0c26d848ef36aed70df906893907e2d0686 (diff) | |
fix: align pane scrolling with tmux and ghostty
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/api_ping.rs | 15 | ||||
| -rw-r--r-- | tests/cli_wrapper.rs | 26 |
2 files changed, 39 insertions, 2 deletions
diff --git a/tests/api_ping.rs b/tests/api_ping.rs index 043d9931..42e5ac0f 100644 --- a/tests/api_ping.rs +++ b/tests/api_ping.rs @@ -1,5 +1,5 @@ use std::fs; -use std::io::{BufRead, BufReader, Write}; +use std::io::{BufRead, BufReader, Read, Write}; use std::os::unix::net::UnixStream; use std::path::{Path, PathBuf}; use std::sync::{Mutex, MutexGuard, OnceLock}; @@ -18,6 +18,7 @@ fn unique_test_dir() -> PathBuf { struct SpawnedHerdr { _master: Box<dyn MasterPty + Send>, + _drain_thread: thread::JoinHandle<()>, child: Box<dyn Child + Send + Sync>, } @@ -76,10 +77,22 @@ fn spawn_herdr_with_path( cmd.env("PATH", path); } + let mut reader = pair.master.try_clone_reader().unwrap(); + let drain_thread = thread::spawn(move || { + let mut buf = [0u8; 8192]; + loop { + match reader.read(&mut buf) { + Ok(0) | Err(_) => break, + Ok(_) => {} + } + } + }); + let child = pair.slave.spawn_command(cmd).unwrap(); SpawnedHerdr { _master: pair.master, + _drain_thread: drain_thread, child, } } diff --git a/tests/cli_wrapper.rs b/tests/cli_wrapper.rs index dd52c082..5621b60b 100644 --- a/tests/cli_wrapper.rs +++ b/tests/cli_wrapper.rs @@ -1,5 +1,5 @@ use std::fs; -use std::io::{BufRead, BufReader, Write}; +use std::io::{BufRead, BufReader, Read, Write}; use std::os::unix::net::UnixStream; use std::path::{Path, PathBuf}; use std::process::Command; @@ -18,6 +18,7 @@ fn unique_test_dir() -> PathBuf { struct SpawnedHerdr { _master: Box<dyn MasterPty + Send>, + _drain_thread: thread::JoinHandle<()>, child: Box<dyn Child + Send + Sync>, } @@ -57,9 +58,21 @@ fn spawn_herdr(config_home: &Path, runtime_dir: &Path, socket_path: &Path) -> Sp cmd.env("HERDR_SOCKET_PATH", socket_path); cmd.env_remove("HERDR_ENV"); + let mut reader = pair.master.try_clone_reader().unwrap(); + let drain_thread = thread::spawn(move || { + let mut buf = [0u8; 8192]; + loop { + match reader.read(&mut buf) { + Ok(0) | Err(_) => break, + Ok(_) => {} + } + } + }); + let child = pair.slave.spawn_command(cmd).unwrap(); SpawnedHerdr { _master: pair.master, + _drain_thread: drain_thread, child, } } @@ -515,9 +528,20 @@ fn wait_agent_state_exits_when_state_matches() { std::env::var("PATH").unwrap_or_default() ), ); + let mut reader = pair.master.try_clone_reader().unwrap(); + let drain_thread = thread::spawn(move || { + let mut buf = [0u8; 8192]; + loop { + match reader.read(&mut buf) { + Ok(0) | Err(_) => break, + Ok(_) => {} + } + } + }); let child = pair.slave.spawn_command(cmd).unwrap(); let mut herdr = SpawnedHerdr { _master: pair.master, + _drain_thread: drain_thread, child, }; |
