Improved resiliency of two auth-related tests (#3427)
This PR improves two existing auth-related tests. They were failing when run in an environment where an `OPENAI_API_KEY` env variable was defined. The change makes them more resilient.
This commit is contained in:
@@ -54,6 +54,18 @@ pub struct McpProcess {
|
|||||||
|
|
||||||
impl McpProcess {
|
impl McpProcess {
|
||||||
pub async fn new(codex_home: &Path) -> anyhow::Result<Self> {
|
pub async fn new(codex_home: &Path) -> anyhow::Result<Self> {
|
||||||
|
Self::new_with_env(codex_home, &[]).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a new MCP process, allowing tests to override or remove
|
||||||
|
/// specific environment variables for the child process only.
|
||||||
|
///
|
||||||
|
/// Pass a tuple of (key, Some(value)) to set/override, or (key, None) to
|
||||||
|
/// remove a variable from the child's environment.
|
||||||
|
pub async fn new_with_env(
|
||||||
|
codex_home: &Path,
|
||||||
|
env_overrides: &[(&str, Option<&str>)],
|
||||||
|
) -> anyhow::Result<Self> {
|
||||||
// Use assert_cmd to locate the binary path and then switch to tokio::process::Command
|
// Use assert_cmd to locate the binary path and then switch to tokio::process::Command
|
||||||
let std_cmd = StdCommand::cargo_bin("codex-mcp-server")
|
let std_cmd = StdCommand::cargo_bin("codex-mcp-server")
|
||||||
.context("should find binary for codex-mcp-server")?;
|
.context("should find binary for codex-mcp-server")?;
|
||||||
@@ -68,6 +80,17 @@ impl McpProcess {
|
|||||||
cmd.env("CODEX_HOME", codex_home);
|
cmd.env("CODEX_HOME", codex_home);
|
||||||
cmd.env("RUST_LOG", "debug");
|
cmd.env("RUST_LOG", "debug");
|
||||||
|
|
||||||
|
for (k, v) in env_overrides {
|
||||||
|
match v {
|
||||||
|
Some(val) => {
|
||||||
|
cmd.env(k, val);
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
cmd.env_remove(k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let mut process = cmd
|
let mut process = cmd
|
||||||
.kill_on_drop(true)
|
.kill_on_drop(true)
|
||||||
.spawn()
|
.spawn()
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ async fn get_auth_status_no_auth() {
|
|||||||
let codex_home = TempDir::new().unwrap_or_else(|e| panic!("create tempdir: {e}"));
|
let codex_home = TempDir::new().unwrap_or_else(|e| panic!("create tempdir: {e}"));
|
||||||
create_config_toml(codex_home.path()).expect("write config.toml");
|
create_config_toml(codex_home.path()).expect("write config.toml");
|
||||||
|
|
||||||
let mut mcp = McpProcess::new(codex_home.path())
|
let mut mcp = McpProcess::new_with_env(codex_home.path(), &[("OPENAI_API_KEY", None)])
|
||||||
.await
|
.await
|
||||||
.expect("spawn mcp process");
|
.expect("spawn mcp process");
|
||||||
timeout(DEFAULT_READ_TIMEOUT, mcp.initialize())
|
timeout(DEFAULT_READ_TIMEOUT, mcp.initialize())
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ async fn logout_chatgpt_removes_auth() {
|
|||||||
login_with_api_key(codex_home.path(), "sk-test-key").expect("seed api key");
|
login_with_api_key(codex_home.path(), "sk-test-key").expect("seed api key");
|
||||||
assert!(codex_home.path().join("auth.json").exists());
|
assert!(codex_home.path().join("auth.json").exists());
|
||||||
|
|
||||||
let mut mcp = McpProcess::new(codex_home.path())
|
let mut mcp = McpProcess::new_with_env(codex_home.path(), &[("OPENAI_API_KEY", None)])
|
||||||
.await
|
.await
|
||||||
.expect("spawn mcp process");
|
.expect("spawn mcp process");
|
||||||
timeout(DEFAULT_READ_TIMEOUT, mcp.initialize())
|
timeout(DEFAULT_READ_TIMEOUT, mcp.initialize())
|
||||||
|
|||||||
Reference in New Issue
Block a user