mirror of
https://github.com/openai/codex.git
synced 2026-04-24 22:54:54 +00:00
fix: correct login shell mismatch in the accept_elicitation_for_prompt_rule() test (#8931)
Because the path to `git` is used to construct `elicitations_to_accept`,
we need to ensure that we resolve which `git` to use the same way our
Bash process will:
c9c6560685/codex-rs/exec-server/tests/suite/accept_elicitation.rs (L59-L69)
This fixes an issue when running the test on macOS using Bazel
(https://github.com/openai/codex/pull/8875) where the login shell chose
`/opt/homebrew/bin/git` whereas the non-login shell chose
`/usr/bin/git`.
This commit is contained in:
@@ -27,6 +27,8 @@ use std::os::unix::fs::symlink;
|
||||
use tempfile::TempDir;
|
||||
use tokio::process::Command;
|
||||
|
||||
const USE_LOGIN_SHELL: bool = false;
|
||||
|
||||
/// Verify that when using a read-only sandbox and an execpolicy that prompts,
|
||||
/// the proper elicitation is sent. Upon auto-approving the elicitation, the
|
||||
/// command should be run privileged outside the sandbox.
|
||||
@@ -56,7 +58,7 @@ prefix_rule(
|
||||
// Create an MCP client that approves expected elicitation messages.
|
||||
let project_root = TempDir::new()?;
|
||||
let project_root_path = project_root.path().canonicalize().unwrap();
|
||||
let git_path = resolve_git_path().await?;
|
||||
let git_path = resolve_git_path(USE_LOGIN_SHELL).await?;
|
||||
let expected_elicitation_message = format!(
|
||||
"Allow agent to run `{} init .` in `{}`?",
|
||||
git_path,
|
||||
@@ -98,7 +100,7 @@ prefix_rule(
|
||||
name: Cow::Borrowed("shell"),
|
||||
arguments: Some(object(json!(
|
||||
{
|
||||
"login": false,
|
||||
"login": USE_LOGIN_SHELL,
|
||||
"command": "git init .",
|
||||
"workdir": project_root_path.to_string_lossy(),
|
||||
}
|
||||
@@ -166,9 +168,10 @@ fn ensure_codex_cli() -> Result<PathBuf> {
|
||||
Ok(codex_cli)
|
||||
}
|
||||
|
||||
async fn resolve_git_path() -> Result<String> {
|
||||
async fn resolve_git_path(use_login_shell: bool) -> Result<String> {
|
||||
let bash_flag = if use_login_shell { "-lc" } else { "-c" };
|
||||
let git = Command::new("bash")
|
||||
.arg("-lc")
|
||||
.arg(bash_flag)
|
||||
.arg("command -v git")
|
||||
.output()
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user