mirror of
https://github.com/openai/codex.git
synced 2026-04-28 08:34:54 +00:00
135 lines
4.7 KiB
Markdown
135 lines
4.7 KiB
Markdown
# PR #1664: Fix flaky test
|
|
|
|
- URL: https://github.com/openai/codex/pull/1664
|
|
- Author: gpeal
|
|
- Created: 2025-07-23 22:25:20 UTC
|
|
- Updated: 2025-07-23 22:40:10 UTC
|
|
- Changes: +21/-19, Files changed: 3, Commits: 2
|
|
|
|
## Description
|
|
|
|
(No description.)
|
|
|
|
## Full Diff
|
|
|
|
```diff
|
|
diff --git a/codex-rs/chatgpt/src/apply_command.rs b/codex-rs/chatgpt/src/apply_command.rs
|
|
index 4209d958e1..52ab205a0c 100644
|
|
--- a/codex-rs/chatgpt/src/apply_command.rs
|
|
+++ b/codex-rs/chatgpt/src/apply_command.rs
|
|
@@ -1,3 +1,5 @@
|
|
+use std::path::PathBuf;
|
|
+
|
|
use clap::Parser;
|
|
use codex_common::CliConfigOverrides;
|
|
use codex_core::config::Config;
|
|
@@ -17,7 +19,10 @@ pub struct ApplyCommand {
|
|
#[clap(flatten)]
|
|
pub config_overrides: CliConfigOverrides,
|
|
}
|
|
-pub async fn run_apply_command(apply_cli: ApplyCommand) -> anyhow::Result<()> {
|
|
+pub async fn run_apply_command(
|
|
+ apply_cli: ApplyCommand,
|
|
+ cwd: Option<PathBuf>,
|
|
+) -> anyhow::Result<()> {
|
|
let config = Config::load_with_cli_overrides(
|
|
apply_cli
|
|
.config_overrides
|
|
@@ -29,10 +34,13 @@ pub async fn run_apply_command(apply_cli: ApplyCommand) -> anyhow::Result<()> {
|
|
init_chatgpt_token_from_auth(&config.codex_home).await?;
|
|
|
|
let task_response = get_task(&config, apply_cli.task_id).await?;
|
|
- apply_diff_from_task(task_response).await
|
|
+ apply_diff_from_task(task_response, cwd).await
|
|
}
|
|
|
|
-pub async fn apply_diff_from_task(task_response: GetTaskResponse) -> anyhow::Result<()> {
|
|
+pub async fn apply_diff_from_task(
|
|
+ task_response: GetTaskResponse,
|
|
+ cwd: Option<PathBuf>,
|
|
+) -> anyhow::Result<()> {
|
|
let diff_turn = match task_response.current_diff_task_turn {
|
|
Some(turn) => turn,
|
|
None => anyhow::bail!("No diff turn found"),
|
|
@@ -42,13 +50,17 @@ pub async fn apply_diff_from_task(task_response: GetTaskResponse) -> anyhow::Res
|
|
_ => None,
|
|
});
|
|
match output_diff {
|
|
- Some(output_diff) => apply_diff(&output_diff.diff).await,
|
|
+ Some(output_diff) => apply_diff(&output_diff.diff, cwd).await,
|
|
None => anyhow::bail!("No PR output item found"),
|
|
}
|
|
}
|
|
|
|
-async fn apply_diff(diff: &str) -> anyhow::Result<()> {
|
|
- let toplevel_output = tokio::process::Command::new("git")
|
|
+async fn apply_diff(diff: &str, cwd: Option<PathBuf>) -> anyhow::Result<()> {
|
|
+ let mut cmd = tokio::process::Command::new("git");
|
|
+ if let Some(cwd) = cwd {
|
|
+ cmd.current_dir(cwd);
|
|
+ }
|
|
+ let toplevel_output = cmd
|
|
.args(vec!["rev-parse", "--show-toplevel"])
|
|
.output()
|
|
.await?;
|
|
diff --git a/codex-rs/chatgpt/tests/apply_command_e2e.rs b/codex-rs/chatgpt/tests/apply_command_e2e.rs
|
|
index e395e4f155..45c33bedb4 100644
|
|
--- a/codex-rs/chatgpt/tests/apply_command_e2e.rs
|
|
+++ b/codex-rs/chatgpt/tests/apply_command_e2e.rs
|
|
@@ -78,17 +78,7 @@ async fn test_apply_command_creates_fibonacci_file() {
|
|
.await
|
|
.expect("Failed to load fixture");
|
|
|
|
- let original_dir = std::env::current_dir().expect("Failed to get current dir");
|
|
- std::env::set_current_dir(repo_path).expect("Failed to change directory");
|
|
- struct DirGuard(std::path::PathBuf);
|
|
- impl Drop for DirGuard {
|
|
- fn drop(&mut self) {
|
|
- let _ = std::env::set_current_dir(&self.0);
|
|
- }
|
|
- }
|
|
- let _guard = DirGuard(original_dir);
|
|
-
|
|
- apply_diff_from_task(task_response)
|
|
+ apply_diff_from_task(task_response, Some(repo_path.to_path_buf()))
|
|
.await
|
|
.expect("Failed to apply diff from task");
|
|
|
|
@@ -173,7 +163,7 @@ console.log(fib(10));
|
|
.await
|
|
.expect("Failed to load fixture");
|
|
|
|
- let apply_result = apply_diff_from_task(task_response).await;
|
|
+ let apply_result = apply_diff_from_task(task_response, Some(repo_path.to_path_buf())).await;
|
|
|
|
assert!(
|
|
apply_result.is_err(),
|
|
diff --git a/codex-rs/cli/src/main.rs b/codex-rs/cli/src/main.rs
|
|
index 7e23782d75..e397b0ca6a 100644
|
|
--- a/codex-rs/cli/src/main.rs
|
|
+++ b/codex-rs/cli/src/main.rs
|
|
@@ -145,7 +145,7 @@ async fn cli_main(codex_linux_sandbox_exe: Option<PathBuf>) -> anyhow::Result<()
|
|
},
|
|
Some(Subcommand::Apply(mut apply_cli)) => {
|
|
prepend_config_flags(&mut apply_cli.config_overrides, cli.config_overrides);
|
|
- run_apply_command(apply_cli).await?;
|
|
+ run_apply_command(apply_cli, None).await?;
|
|
}
|
|
}
|
|
```
|
|
|
|
## Review Comments
|
|
|
|
### codex-rs/chatgpt/tests/apply_command_e2e.rs
|
|
|
|
- Created: 2025-07-23 22:29:13 UTC | Link: https://github.com/openai/codex/pull/1664#discussion_r2226856589
|
|
|
|
```diff
|
|
@@ -78,17 +78,7 @@ async fn test_apply_command_creates_fibonacci_file() {
|
|
.await
|
|
.expect("Failed to load fixture");
|
|
|
|
- let original_dir = std::env::current_dir().expect("Failed to get current dir");
|
|
```
|
|
|
|
> 🙏 |