diff --git a/server/packages/sandbox-agent/tests/support/docker.rs b/server/packages/sandbox-agent/tests/support/docker.rs index af4d81c..3315e49 100644 --- a/server/packages/sandbox-agent/tests/support/docker.rs +++ b/server/packages/sandbox-agent/tests/support/docker.rs @@ -240,8 +240,11 @@ fn build_env(layout: &TestLayout, auth: &AuthConfig) -> BTreeMap env.insert("SANDBOX_AGENT_TEST_AUTH_TOKEN".to_string(), token.clone()); } - let custom_path_entries = - custom_path_entries(layout.install_dir.parent().expect("install base")); + let mut custom_path_entries = custom_path_entries(layout.install_dir.parent().expect("install base")); + custom_path_entries.extend(explicit_path_entries()); + custom_path_entries.sort(); + custom_path_entries.dedup(); + if custom_path_entries.is_empty() { env.insert("PATH".to_string(), DEFAULT_PATH.to_string()); } else { @@ -441,6 +444,18 @@ fn custom_path_entries(root: &Path) -> Vec { entries } +fn explicit_path_entries() -> Vec { + let mut entries = Vec::new(); + if let Some(value) = std::env::var_os("SANDBOX_AGENT_TEST_EXTRA_PATHS") { + for entry in std::env::split_paths(&value) { + if entry.is_absolute() && entry.exists() { + entries.push(entry); + } + } + } + entries +} + fn rewrite_localhost_url(key: &str, value: &str) -> String { if key.ends_with("_URL") || key.ends_with("_URI") { return value diff --git a/server/packages/sandbox-agent/tests/v1_api/control_plane.rs b/server/packages/sandbox-agent/tests/v1_api/control_plane.rs index d6e2129..a0dd74c 100644 --- a/server/packages/sandbox-agent/tests/v1_api/control_plane.rs +++ b/server/packages/sandbox-agent/tests/v1_api/control_plane.rs @@ -187,6 +187,8 @@ async fn lazy_install_runs_on_first_bootstrap() { paths.extend(std::env::split_paths(&original_path)); let merged_path = std::env::join_paths(paths).expect("join PATH"); let _path_guard = EnvVarGuard::set_os("PATH", merged_path.as_os_str()); + let _extra_paths_guard = + EnvVarGuard::set_os("SANDBOX_AGENT_TEST_EXTRA_PATHS", helper_bin.as_os_str()); let test_app = TestApp::with_setup(AuthConfig::disabled(), |install_path| { fs::create_dir_all(install_path.join("agent_processes"))