#![cfg(feature = "python")]
use tools_rs::{Language, ToolCollection, ToolsBuilder};
#[test]
fn scripted_no_paths_returns_collection() {
let tools: ToolCollection = ToolsBuilder::new()
.with_language(Language::Python)
.collect()
.unwrap();
let _ = tools.json().unwrap();
}
#[test]
fn scripted_with_path_hits_stub() {
let err = ToolsBuilder::new()
.with_language(Language::Python)
.from_path("/nonexistent/script.py")
.collect()
.err()
.expect("should error — adapter not implemented");
assert!(
err.to_string().contains("not yet implemented"),
"unexpected error: {err}"
);
}
#[test]
fn scripted_from_path_chainable() {
let err = ToolsBuilder::new()
.with_language(Language::Python)
.from_path("/first.py")
.from_path("/second.py")
.collect()
.err()
.expect("should error on first path");
assert!(err.to_string().contains("first.py"));
}
#[test]
fn scripted_collection_includes_inventory_tools() {
let plain: ToolCollection = ToolsBuilder::new().collect().unwrap();
let scripted: ToolCollection = ToolsBuilder::new()
.with_language(Language::Python)
.collect()
.unwrap();
let plain_decls = plain.json().unwrap();
let scripted_decls = scripted.json().unwrap();
assert_eq!(
plain_decls.as_array().unwrap().len(),
scripted_decls.as_array().unwrap().len(),
);
}