mirror of
https://github.com/lWolvesl/claw-code.git
synced 2026-04-03 03:51:53 +08:00
Make Rust sessions easier to find and resume
This adds a lightweight session home for the Rust CLI, auto-persists REPL state, and exposes list, search, show, and named resume flows so users no longer need to remember raw JSON paths. The change keeps the old --resume SESSION.json path working while adding friendlier session discovery. It also makes API env-based tests hermetic so workspace verification remains stable regardless of shell environment. Constraint: Keep session UX incremental and CLI-native without introducing a new database or TUI layer Constraint: Preserve backward compatibility for the existing --resume SESSION.json workflow Rejected: Build a richer interactive picker now | higher implementation cost than needed for this parity slice Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep human-friendly session lookup additive; do not remove explicit path-based resume support Tested: cargo fmt; cargo clippy --all-targets --all-features -- -D warnings; cargo test -q Not-tested: Manual multi-session interactive REPL behavior across multiple terminals
This commit is contained in:
@@ -311,18 +311,38 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn read_api_key_requires_presence() {
|
||||
let previous_auth = std::env::var("ANTHROPIC_AUTH_TOKEN").ok();
|
||||
let previous_key = std::env::var("ANTHROPIC_API_KEY").ok();
|
||||
std::env::remove_var("ANTHROPIC_AUTH_TOKEN");
|
||||
std::env::remove_var("ANTHROPIC_API_KEY");
|
||||
let error = super::read_api_key().expect_err("missing key should error");
|
||||
assert!(matches!(error, crate::error::ApiError::MissingApiKey));
|
||||
match previous_auth {
|
||||
Some(value) => std::env::set_var("ANTHROPIC_AUTH_TOKEN", value),
|
||||
None => std::env::remove_var("ANTHROPIC_AUTH_TOKEN"),
|
||||
}
|
||||
match previous_key {
|
||||
Some(value) => std::env::set_var("ANTHROPIC_API_KEY", value),
|
||||
None => std::env::remove_var("ANTHROPIC_API_KEY"),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_api_key_requires_non_empty_value() {
|
||||
let previous_auth = std::env::var("ANTHROPIC_AUTH_TOKEN").ok();
|
||||
let previous_key = std::env::var("ANTHROPIC_API_KEY").ok();
|
||||
std::env::set_var("ANTHROPIC_AUTH_TOKEN", "");
|
||||
std::env::remove_var("ANTHROPIC_API_KEY");
|
||||
let error = super::read_api_key().expect_err("empty key should error");
|
||||
assert!(matches!(error, crate::error::ApiError::MissingApiKey));
|
||||
match previous_auth {
|
||||
Some(value) => std::env::set_var("ANTHROPIC_AUTH_TOKEN", value),
|
||||
None => std::env::remove_var("ANTHROPIC_AUTH_TOKEN"),
|
||||
}
|
||||
match previous_key {
|
||||
Some(value) => std::env::set_var("ANTHROPIC_API_KEY", value),
|
||||
None => std::env::remove_var("ANTHROPIC_API_KEY"),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user