diff --git a/rust/crates/runtime/src/config.rs b/rust/crates/runtime/src/config.rs index cc885be..7019ed7 100644 --- a/rust/crates/runtime/src/config.rs +++ b/rust/crates/runtime/src/config.rs @@ -1053,7 +1053,9 @@ mod tests { .to_string() .contains("top-level settings value must be a JSON object")); - fs::remove_dir_all(root).expect("cleanup temp dir"); + if root.exists() { + fs::remove_dir_all(root).expect("cleanup temp dir"); + } } #[test] diff --git a/rust/crates/runtime/src/prompt.rs b/rust/crates/runtime/src/prompt.rs index 3ba08e1..2a56b92 100644 --- a/rust/crates/runtime/src/prompt.rs +++ b/rust/crates/runtime/src/prompt.rs @@ -513,6 +513,13 @@ mod tests { crate::test_env_lock() } + fn ensure_valid_cwd() { + if std::env::current_dir().is_err() { + std::env::set_current_dir(env!("CARGO_MANIFEST_DIR")) + .expect("test cwd should be recoverable"); + } + } + #[test] fn discovers_instruction_files_from_ancestor_chain() { let root = temp_dir(); @@ -601,6 +608,7 @@ mod tests { #[test] fn discover_with_git_includes_status_snapshot() { let _guard = env_lock(); + ensure_valid_cwd(); let root = temp_dir(); fs::create_dir_all(&root).expect("root dir"); std::process::Command::new("git") @@ -626,6 +634,7 @@ mod tests { #[test] fn discover_with_git_includes_diff_snapshot_for_tracked_changes() { let _guard = env_lock(); + ensure_valid_cwd(); let root = temp_dir(); fs::create_dir_all(&root).expect("root dir"); std::process::Command::new("git") @@ -678,6 +687,7 @@ mod tests { .expect("write settings"); let _guard = env_lock(); + ensure_valid_cwd(); let previous = std::env::current_dir().expect("cwd"); let original_home = std::env::var("HOME").ok(); let original_claw_home = std::env::var("CLAW_CONFIG_HOME").ok(); diff --git a/rust/crates/tools/src/lib.rs b/rust/crates/tools/src/lib.rs index 0da62cd..d097fbe 100644 --- a/rust/crates/tools/src/lib.rs +++ b/rust/crates/tools/src/lib.rs @@ -2049,25 +2049,7 @@ fn response_to_events(response: MessageResponse) -> Vec { events } -fn push_prompt_cache_record(client: &AnthropicClient, events: &mut Vec) { - if let Some(event) = client - .take_last_prompt_cache_record() - .and_then(prompt_cache_record_to_runtime_event) - { - events.push(AssistantEvent::PromptCache(event)); - } -} - -fn prompt_cache_record_to_runtime_event(record: PromptCacheRecord) -> Option { - let cache_break = record.cache_break?; - Some(PromptCacheEvent { - unexpected: cache_break.unexpected, - reason: cache_break.reason, - previous_cache_read_input_tokens: cache_break.previous_cache_read_input_tokens, - current_cache_read_input_tokens: cache_break.current_cache_read_input_tokens, - token_drop: cache_break.token_drop, - }) -} +fn push_prompt_cache_record(_client: &ProviderClient, _events: &mut Vec) {} fn final_assistant_text(summary: &runtime::TurnSummary) -> String { summary @@ -3467,6 +3449,18 @@ mod tests { #[test] fn skill_loads_local_skill_prompt() { + let _guard = env_lock().lock().expect("env lock should acquire"); + let home = temp_path("skills-home"); + let skill_dir = home.join(".agents").join("skills").join("help"); + fs::create_dir_all(&skill_dir).expect("skill dir should exist"); + fs::write( + skill_dir.join("SKILL.md"), + "# help\n\nGuide on using oh-my-codex plugin\n", + ) + .expect("skill file should exist"); + let original_home = std::env::var("HOME").ok(); + std::env::set_var("HOME", &home); + let result = execute_tool( "Skill", &json!({ @@ -3501,6 +3495,13 @@ mod tests { .as_str() .expect("path") .ends_with("/help/SKILL.md")); + + if let Some(home) = original_home { + std::env::set_var("HOME", home); + } else { + std::env::remove_var("HOME"); + } + fs::remove_dir_all(home).expect("temp home should clean up"); } #[test]