mirror of
https://github.com/openai/codex.git
synced 2026-05-16 01:02:48 +00:00
## Why PR #13783 moved the `codex.rs` unit tests into `codex_tests.rs`. This applies the same extraction pattern across the rest of `codex-rs/core` so the production modules stay focused on runtime code instead of large inline test blocks. Keeping the tests in sibling files also makes follow-up edits easier to review because product changes no longer have to share a file with hundreds or thousands of lines of test scaffolding. ## What changed - replaced each inline `mod tests { ... }` in `codex-rs/core/src/**` with a path-based module declaration - moved each extracted unit test module into a sibling `*_tests.rs` file, using `mod_tests.rs` for `mod.rs` modules - preserved the existing `cfg(...)` guards and module-local structure so the refactor remains structural rather than behavioral ## Testing - `cargo test -p codex-core --lib` (`1653 passed; 0 failed; 5 ignored`) - `just fix -p codex-core` - `cargo fmt --check` - `cargo shear`
89 lines
2.3 KiB
Rust
89 lines
2.3 KiB
Rust
use super::canonicalize_command_for_approval;
|
|
use pretty_assertions::assert_eq;
|
|
|
|
#[test]
|
|
fn canonicalizes_word_only_shell_scripts_to_inner_command() {
|
|
let command_a = vec![
|
|
"/bin/bash".to_string(),
|
|
"-lc".to_string(),
|
|
"cargo test -p codex-core".to_string(),
|
|
];
|
|
let command_b = vec![
|
|
"bash".to_string(),
|
|
"-lc".to_string(),
|
|
"cargo test -p codex-core".to_string(),
|
|
];
|
|
|
|
assert_eq!(
|
|
canonicalize_command_for_approval(&command_a),
|
|
vec![
|
|
"cargo".to_string(),
|
|
"test".to_string(),
|
|
"-p".to_string(),
|
|
"codex-core".to_string(),
|
|
]
|
|
);
|
|
assert_eq!(
|
|
canonicalize_command_for_approval(&command_a),
|
|
canonicalize_command_for_approval(&command_b)
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn canonicalizes_heredoc_scripts_to_stable_script_key() {
|
|
let script = "python3 <<'PY'\nprint('hello')\nPY";
|
|
let command_a = vec![
|
|
"/bin/zsh".to_string(),
|
|
"-lc".to_string(),
|
|
script.to_string(),
|
|
];
|
|
let command_b = vec!["zsh".to_string(), "-lc".to_string(), script.to_string()];
|
|
|
|
assert_eq!(
|
|
canonicalize_command_for_approval(&command_a),
|
|
vec![
|
|
"__codex_shell_script__".to_string(),
|
|
"-lc".to_string(),
|
|
script.to_string(),
|
|
]
|
|
);
|
|
assert_eq!(
|
|
canonicalize_command_for_approval(&command_a),
|
|
canonicalize_command_for_approval(&command_b)
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn canonicalizes_powershell_wrappers_to_stable_script_key() {
|
|
let script = "Write-Host hi";
|
|
let command_a = vec![
|
|
"powershell.exe".to_string(),
|
|
"-NoProfile".to_string(),
|
|
"-Command".to_string(),
|
|
script.to_string(),
|
|
];
|
|
let command_b = vec![
|
|
"powershell".to_string(),
|
|
"-Command".to_string(),
|
|
script.to_string(),
|
|
];
|
|
|
|
assert_eq!(
|
|
canonicalize_command_for_approval(&command_a),
|
|
vec![
|
|
"__codex_powershell_script__".to_string(),
|
|
script.to_string(),
|
|
]
|
|
);
|
|
assert_eq!(
|
|
canonicalize_command_for_approval(&command_a),
|
|
canonicalize_command_for_approval(&command_b)
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn preserves_non_shell_commands() {
|
|
let command = vec!["cargo".to_string(), "fmt".to_string()];
|
|
assert_eq!(canonicalize_command_for_approval(&command), command);
|
|
}
|