#[tokio::test]
async fn search_is_callable_as_a_library() {
let dir = std::env::temp_dir().join(format!("kibble_lib_search_{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
let res: std::io::Result<Vec<kibble::retrieve::Hit>> =
kibble::retrieve::search(&dir, "anything", 5).await;
std::fs::remove_dir_all(&dir).ok();
assert!(res.is_err(), "expected a missing-index Err, got {res:?}");
}
#[tokio::test]
async fn query_returns_clean_err_when_base_url_unset() {
let dir = std::env::temp_dir().join(format!("kibble_lib_query_{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
let out: std::io::Result<kibble::ask::Outcome> =
kibble::ask::query(&dir, "what is a stack canary?", kibble::ask::AskOptions::default()).await;
std::fs::remove_dir_all(&dir).ok();
let err = out.expect_err("expected a clean Err for unset base_url");
assert!(err.to_string().contains("base_url"), "unexpected error: {err}");
}
#[test]
fn query_future_is_send() {
fn assert_send<T: Send>(_: &T) {}
let dir = std::env::temp_dir();
let fut = kibble::ask::query(&dir, "q", kibble::ask::AskOptions::default());
assert_send(&fut);
}
#[test]
fn query_stream_is_send() {
fn assert_send<T: Send>(_: &T) {}
let dir = std::env::temp_dir();
let s = kibble::ask::query_stream(&dir, "q", kibble::ask::AskOptions::default());
assert_send(&s); }
#[tokio::test]
async fn query_stream_errors_cleanly_without_base_url() {
let dir = std::env::temp_dir().join(format!("kibble_stream_{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
let res = kibble::ask::query_stream(&dir, "q", kibble::ask::AskOptions::default());
std::fs::remove_dir_all(&dir).ok();
let err = res.err().expect("unset base_url must be a clean Err before streaming");
assert!(err.to_string().contains("base_url"), "unexpected error: {err}");
}