diff --git a/codex-rs/core/src/models_manager/manager_tests.rs b/codex-rs/core/src/models_manager/manager_tests.rs index 6ab1c267bbf..48c01f198cb 100644 --- a/codex-rs/core/src/models_manager/manager_tests.rs +++ b/codex-rs/core/src/models_manager/manager_tests.rs @@ -112,10 +112,12 @@ impl ProviderAuthScript { fn new(tokens: &[&str]) -> std::io::Result { let tempdir = tempfile::tempdir()?; let tokens_file = tempdir.path().join("tokens.txt"); + // `cmd.exe`'s `set /p` treats LF-only input as one line, so use CRLF on Windows. + let token_line_ending = if cfg!(windows) { "\r\n" } else { "\n" }; let mut token_file_contents = String::new(); for token in tokens { token_file_contents.push_str(token); - token_file_contents.push('\n'); + token_file_contents.push_str(token_line_ending); } std::fs::write(&tokens_file, token_file_contents)?; @@ -142,23 +144,28 @@ mv tokens.next tokens.txt #[cfg(windows)] let (command, args) = { - let script_path = tempdir.path().join("print-token.ps1"); + let script_path = tempdir.path().join("print-token.cmd"); std::fs::write( &script_path, - r#"$lines = @(Get-Content -Path tokens.txt) -if ($lines.Count -eq 0) { exit 1 } -Write-Output $lines[0] -$lines | Select-Object -Skip 1 | Set-Content -Path tokens.txt + r#"@echo off +setlocal EnableExtensions DisableDelayedExpansion +set "first_line=" + ModelProviderAuthInfo { let timeout_ms = if cfg!(windows) { - // `powershell.exe` startup can be slow on loaded Windows CI workers + // Process startup can be slow on loaded Windows CI workers. 10_000 } else { 2_000 diff --git a/codex-rs/login/src/auth/auth_tests.rs b/codex-rs/login/src/auth/auth_tests.rs index 3ee877872f1..fb7da63e791 100644 --- a/codex-rs/login/src/auth/auth_tests.rs +++ b/codex-rs/login/src/auth/auth_tests.rs @@ -355,10 +355,12 @@ impl ProviderAuthScript { fn new(tokens: &[&str]) -> std::io::Result { let tempdir = tempfile::tempdir()?; let token_file = tempdir.path().join("tokens.txt"); + // `cmd.exe`'s `set /p` treats LF-only input as one line, so use CRLF on Windows. + let token_line_ending = if cfg!(windows) { "\r\n" } else { "\n" }; let mut token_file_contents = String::new(); for token in tokens { token_file_contents.push_str(token); - token_file_contents.push('\n'); + token_file_contents.push_str(token_line_ending); } std::fs::write(&token_file, token_file_contents)?; @@ -385,23 +387,28 @@ mv tokens.next tokens.txt #[cfg(windows)] let (command, args) = { - let script_path = tempdir.path().join("print-token.ps1"); + let script_path = tempdir.path().join("print-token.cmd"); std::fs::write( &script_path, - r#"$lines = @(Get-Content -Path tokens.txt) -if ($lines.Count -eq 0) { exit 1 } -Write-Output $lines[0] -$lines | Select-Object -Skip 1 | Set-Content -Path tokens.txt + r#"@echo off +setlocal EnableExtensions DisableDelayedExpansion +set "first_line=" +