use super::{default_summarizer_choice, SummarizerChoice};
#[cfg(feature = "embedded")]
#[tokio::test]
async fn embedded_summarizer_honors_configured_zero_timeout_before_loading() {
let dir = tempfile::tempdir().unwrap();
let gguf = dir.path().join("fixture.gguf");
std::fs::write(&gguf, b"not model weights").unwrap();
std::fs::write(dir.path().join("tokenizer.json"), b"{}").unwrap();
let cfg = newt_core::SummarizerConfig {
timeout_secs: 0,
..Default::default()
};
let opts = super::summarizer_opts(&cfg, &newt_core::Config::default(), None, false);
let summarize = super::make_loop_summarizer(
String::new(),
"qwen2.5-0.5b".into(),
newt_core::BackendKind::Embedded,
None,
Some(gguf.to_string_lossy().into_owned()),
opts,
);
let error = summarize("summarize this".into()).await.unwrap_err();
assert!(
error.to_string().contains("deadline"),
"configured timeout was ignored: {error:#}"
);
}
#[test]
fn summarizer_defaults_to_embedded_never_the_session_model() {
assert_eq!(
default_summarizer_choice(Some("/models/qwen2.5-0.5b/x.gguf".to_string())),
SummarizerChoice::Embedded("/models/qwen2.5-0.5b/x.gguf".to_string()),
);
assert_eq!(
default_summarizer_choice(None),
SummarizerChoice::DegradedSession,
);
}
#[test]
fn summarizer_ownership_decides_follow_vs_pinned() {
use super::summarizer_follows_session;
use newt_core::{BackendKind, SummarizerConfig};
let gguf = || Some("/models/embed.gguf".to_string());
assert!(!summarizer_follows_session(
&SummarizerConfig::default(),
gguf()
));
assert!(summarizer_follows_session(
&SummarizerConfig::default(),
None
));
assert!(!summarizer_follows_session(
&SummarizerConfig {
endpoint: Some("http://sum-host:11434".into()),
model: Some("qwen2.5-1.5b".into()),
..Default::default()
},
gguf()
));
assert!(!summarizer_follows_session(
&SummarizerConfig {
kind: Some(BackendKind::Embedded),
..Default::default()
},
None
));
assert!(!summarizer_follows_session(
&SummarizerConfig {
model_path: Some("/models/pinned.gguf".into()),
..Default::default()
},
None
));
assert!(summarizer_follows_session(
&SummarizerConfig {
model: Some("small-summariser".into()),
..Default::default()
},
gguf()
));
}