diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-09 14:31:34 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-09 14:31:34 +0300 |
| commit | aeeba8f637e77b16bad6023ee644f7458cd85595 (patch) | |
| tree | 365e88c9a812f61fbdbd555ae3a3bb10beef6304 | |
| parent | 98dcbcf576df4d029bd6b9dc4cb04ed7ecf490df (diff) | |
test: stabilize cli wrapper integration shell startup
| -rw-r--r-- | tests/cli_wrapper.rs | 93 |
1 files changed, 27 insertions, 66 deletions
diff --git a/tests/cli_wrapper.rs b/tests/cli_wrapper.rs index 1395008b..eb774e4a 100644 --- a/tests/cli_wrapper.rs +++ b/tests/cli_wrapper.rs @@ -55,6 +55,15 @@ fn wait_for_socket(path: &Path, timeout: Duration) { } fn spawn_herdr(config_home: &Path, runtime_dir: &Path, socket_path: &Path) -> SpawnedHerdr { + spawn_herdr_with_path(config_home, runtime_dir, socket_path, None) +} + +fn spawn_herdr_with_path( + config_home: &Path, + runtime_dir: &Path, + socket_path: &Path, + path_override: Option<&Path>, +) -> SpawnedHerdr { fs::create_dir_all(config_home.join("herdr")).unwrap(); fs::create_dir_all(runtime_dir).unwrap(); fs::write( @@ -77,7 +86,11 @@ fn spawn_herdr(config_home: &Path, runtime_dir: &Path, socket_path: &Path) -> Sp cmd.env("XDG_CONFIG_HOME", config_home); cmd.env("XDG_RUNTIME_DIR", runtime_dir); cmd.env("HERDR_SOCKET_PATH", socket_path); + cmd.env("SHELL", "/bin/sh"); cmd.env_remove("HERDR_ENV"); + if let Some(path) = path_override { + cmd.env("PATH", path); + } let child = pair.slave.spawn_command(cmd).unwrap(); SpawnedHerdr { @@ -798,40 +811,14 @@ fn wait_agent_status_exits_when_idle_status_matches() { fs::set_permissions(&fake_pi, perms).unwrap(); } - let pair = native_pty_system() - .openpty(PtySize { - rows: 24, - cols: 80, - pixel_width: 0, - pixel_height: 0, - }) - .unwrap(); - fs::create_dir_all(config_home.join("herdr")).unwrap(); - fs::create_dir_all(&runtime_dir).unwrap(); - fs::write( - config_home.join("herdr/config.toml"), - "onboarding = false\n", - ) - .unwrap(); - let mut cmd = CommandBuilder::new(env!("CARGO_BIN_EXE_herdr")); - cmd.arg("--no-session"); - cmd.env("XDG_CONFIG_HOME", &config_home); - cmd.env("XDG_RUNTIME_DIR", &runtime_dir); - cmd.env("HERDR_SOCKET_PATH", &socket_path); - cmd.env_remove("HERDR_ENV"); - cmd.env( - "PATH", - format!( - "{}:{}", - bin_dir.display(), - std::env::var("PATH").unwrap_or_default() - ), + let inherited_path = std::env::var("PATH").unwrap_or_default(); + let path_override = format!("{}:{}", bin_dir.display(), inherited_path); + let herdr = spawn_herdr_with_path( + &config_home, + &runtime_dir, + &socket_path, + Some(Path::new(&path_override)), ); - let child = pair.slave.spawn_command(cmd).unwrap(); - let herdr = SpawnedHerdr { - _master: pair.master, - child, - }; wait_for_socket(&socket_path, Duration::from_secs(5)); @@ -895,40 +882,14 @@ fn wait_agent_status_exits_when_done_status_matches() { fs::set_permissions(&fake_pi, perms).unwrap(); } - let pair = native_pty_system() - .openpty(PtySize { - rows: 24, - cols: 80, - pixel_width: 0, - pixel_height: 0, - }) - .unwrap(); - fs::create_dir_all(config_home.join("herdr")).unwrap(); - fs::create_dir_all(&runtime_dir).unwrap(); - fs::write( - config_home.join("herdr/config.toml"), - "onboarding = false\n", - ) - .unwrap(); - let mut cmd = CommandBuilder::new(env!("CARGO_BIN_EXE_herdr")); - cmd.arg("--no-session"); - cmd.env("XDG_CONFIG_HOME", &config_home); - cmd.env("XDG_RUNTIME_DIR", &runtime_dir); - cmd.env("HERDR_SOCKET_PATH", &socket_path); - cmd.env_remove("HERDR_ENV"); - cmd.env( - "PATH", - format!( - "{}:{}", - bin_dir.display(), - std::env::var("PATH").unwrap_or_default() - ), + let inherited_path = std::env::var("PATH").unwrap_or_default(); + let path_override = format!("{}:{}", bin_dir.display(), inherited_path); + let herdr = spawn_herdr_with_path( + &config_home, + &runtime_dir, + &socket_path, + Some(Path::new(&path_override)), ); - let child = pair.slave.spawn_command(cmd).unwrap(); - let herdr = SpawnedHerdr { - _master: pair.master, - child, - }; wait_for_socket(&socket_path, Duration::from_secs(5)); |
