Files
codex/prs/bolinfest/study/PR-1596-study.md
2025-09-02 15:17:45 -07:00

60 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**DOs**
- Put test-only crates under `[dev-dependencies]`: keeps runtime clean and avoids unnecessary transitive deps.
```toml
# core/Cargo.toml (right)
[dependencies]
uuid = { version = "1", features = ["serde", "v4"] }
# … other runtime deps …
[dev-dependencies]
walkdir = "2.5.0" # used only in tests
```
- Prefer `Command::cargo_bin` in tests: runs the built binary directly instead of spawning `cargo run`.
```rust
use assert_cmd::prelude::*;
use assert_cmd::Command;
use tempfile::TempDir;
let home = TempDir::new().unwrap();
Command::cargo_bin("codex-cli")
.unwrap()
.args([
"exec",
"--skip-git-repo-check",
"-C",
env!("CARGO_MANIFEST_DIR"),
"echo integration-test-marker",
])
.env("CODEX_HOME", home.path())
.env("OPENAI_API_KEY", "dummy")
.env("OPENAI_BASE_URL", "http://unused.local")
.assert()
.success();
```
**DONTs**
- Dont add test-only crates to `[dependencies]`: this bloats the runtime dependency graph.
```toml
# core/Cargo.toml (wrong)
[dependencies]
walkdir = "2.5.0" # ❌ test-only; should be under [dev-dependencies]
```
- Dont shell out to `cargo run` from tests unless theres a compelling reason.
```rust
// ❌ Avoid this in tests
use assert_cmd::Command as AssertCommand;
let mut cmd = AssertCommand::new("cargo");
cmd.arg("run")
.arg("-p").arg("codex-cli")
.arg("--")
.arg("exec")
.arg("--skip-git-repo-check")
.arg("-C").arg(env!("CARGO_MANIFEST_DIR"))
.arg("echo integration-test-marker");
// Prefer Command::cargo_bin(...) instead (see DOs).
```