mirror of
https://github.com/openai/codex.git
synced 2026-04-28 18:32:04 +03:00
60 lines
1.6 KiB
Markdown
60 lines
1.6 KiB
Markdown
**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();
|
||
```
|
||
|
||
**DON’Ts**
|
||
- Don’t 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]
|
||
```
|
||
|
||
- Don’t shell out to `cargo run` from tests unless there’s 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).
|
||
``` |