mirror of
https://github.com/openai/codex.git
synced 2026-04-28 18:32:04 +03:00
1.6 KiB
1.6 KiB
DOs
- Put test-only crates under
[dev-dependencies]: keeps runtime clean and avoids unnecessary transitive deps.
# 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_binin tests: runs the built binary directly instead of spawningcargo run.
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.
# core/Cargo.toml (wrong)
[dependencies]
walkdir = "2.5.0" # ❌ test-only; should be under [dev-dependencies]
- Don’t shell out to
cargo runfrom tests unless there’s a compelling reason.
// ❌ 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).