Skip to content

Commit db84722

Browse files
gpealaibrahim-oai
andauthored
Fix flaky test (openai#1664)
Co-authored-by: aibrahim-oai <[email protected]>
1 parent 6e1838e commit db84722

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

codex-rs/chatgpt/src/apply_command.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::path::PathBuf;
2+
13
use clap::Parser;
24
use codex_common::CliConfigOverrides;
35
use codex_core::config::Config;
@@ -17,7 +19,10 @@ pub struct ApplyCommand {
1719
#[clap(flatten)]
1820
pub config_overrides: CliConfigOverrides,
1921
}
20-
pub async fn run_apply_command(apply_cli: ApplyCommand) -> anyhow::Result<()> {
22+
pub async fn run_apply_command(
23+
apply_cli: ApplyCommand,
24+
cwd: Option<PathBuf>,
25+
) -> anyhow::Result<()> {
2126
let config = Config::load_with_cli_overrides(
2227
apply_cli
2328
.config_overrides
@@ -29,10 +34,13 @@ pub async fn run_apply_command(apply_cli: ApplyCommand) -> anyhow::Result<()> {
2934
init_chatgpt_token_from_auth(&config.codex_home).await?;
3035

3136
let task_response = get_task(&config, apply_cli.task_id).await?;
32-
apply_diff_from_task(task_response).await
37+
apply_diff_from_task(task_response, cwd).await
3338
}
3439

35-
pub async fn apply_diff_from_task(task_response: GetTaskResponse) -> anyhow::Result<()> {
40+
pub async fn apply_diff_from_task(
41+
task_response: GetTaskResponse,
42+
cwd: Option<PathBuf>,
43+
) -> anyhow::Result<()> {
3644
let diff_turn = match task_response.current_diff_task_turn {
3745
Some(turn) => turn,
3846
None => anyhow::bail!("No diff turn found"),
@@ -42,13 +50,17 @@ pub async fn apply_diff_from_task(task_response: GetTaskResponse) -> anyhow::Res
4250
_ => None,
4351
});
4452
match output_diff {
45-
Some(output_diff) => apply_diff(&output_diff.diff).await,
53+
Some(output_diff) => apply_diff(&output_diff.diff, cwd).await,
4654
None => anyhow::bail!("No PR output item found"),
4755
}
4856
}
4957

50-
async fn apply_diff(diff: &str) -> anyhow::Result<()> {
51-
let toplevel_output = tokio::process::Command::new("git")
58+
async fn apply_diff(diff: &str, cwd: Option<PathBuf>) -> anyhow::Result<()> {
59+
let mut cmd = tokio::process::Command::new("git");
60+
if let Some(cwd) = cwd {
61+
cmd.current_dir(cwd);
62+
}
63+
let toplevel_output = cmd
5264
.args(vec!["rev-parse", "--show-toplevel"])
5365
.output()
5466
.await?;

codex-rs/chatgpt/tests/apply_command_e2e.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,7 @@ async fn test_apply_command_creates_fibonacci_file() {
7878
.await
7979
.expect("Failed to load fixture");
8080

81-
let original_dir = std::env::current_dir().expect("Failed to get current dir");
82-
std::env::set_current_dir(repo_path).expect("Failed to change directory");
83-
struct DirGuard(std::path::PathBuf);
84-
impl Drop for DirGuard {
85-
fn drop(&mut self) {
86-
let _ = std::env::set_current_dir(&self.0);
87-
}
88-
}
89-
let _guard = DirGuard(original_dir);
90-
91-
apply_diff_from_task(task_response)
81+
apply_diff_from_task(task_response, Some(repo_path.to_path_buf()))
9282
.await
9383
.expect("Failed to apply diff from task");
9484

@@ -173,7 +163,7 @@ console.log(fib(10));
173163
.await
174164
.expect("Failed to load fixture");
175165

176-
let apply_result = apply_diff_from_task(task_response).await;
166+
let apply_result = apply_diff_from_task(task_response, Some(repo_path.to_path_buf())).await;
177167

178168
assert!(
179169
apply_result.is_err(),

codex-rs/cli/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ async fn cli_main(codex_linux_sandbox_exe: Option<PathBuf>) -> anyhow::Result<()
145145
},
146146
Some(Subcommand::Apply(mut apply_cli)) => {
147147
prepend_config_flags(&mut apply_cli.config_overrides, cli.config_overrides);
148-
run_apply_command(apply_cli).await?;
148+
run_apply_command(apply_cli, None).await?;
149149
}
150150
}
151151

0 commit comments

Comments
 (0)