Files
Lumotia/crates/llm/tests/smoke.rs
Jake 089349d966
Some checks failed
check / cargo check (macos-latest) (push) Has been cancelled
check / cargo check (ubuntu-22.04) (push) Has been cancelled
check / cargo check (windows-latest) (push) Has been cancelled
check / svelte build + lint (push) Has been cancelled
agent: lumotia-rebrand — rust workspace crates magnotia-* -> lumotia-*
Phase 2 of the rebrand cascade. Renames all 9 workspace crates from
magnotia-* to lumotia-* plus the src-tauri binary crate name:

- magnotia-ai-formatting   -> lumotia-ai-formatting
- magnotia-audio           -> lumotia-audio
- magnotia-cloud-providers -> lumotia-cloud-providers
- magnotia-core            -> lumotia-core
- magnotia-hotkey          -> lumotia-hotkey
- magnotia-llm             -> lumotia-llm
- magnotia-mcp             -> lumotia-mcp
- magnotia-storage         -> lumotia-storage
- magnotia-transcription   -> lumotia-transcription
- magnotia                 -> lumotia (src-tauri binary)
- magnotia_lib             -> lumotia_lib (src-tauri lib target)

Crate directories (crates/audio/ etc.) stay as-is; only the Cargo.toml
[package] name field changes plus all consumer module imports
(magnotia_core -> lumotia_core, etc.).

Remaining magnotia_* references at this point are intentional and
scoped to later phases: tracing targets (Phase 4), DB setting keys
magnotia_preferences/magnotia_history (Phase 5).

cargo build --workspace passes. cargo test --workspace: 330 pass, 0 fail.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 08:48:09 +01:00

63 lines
1.8 KiB
Rust

//! Smoke test: load a GGUF model and exercise the high-level wrappers.
//!
//! Verified against llama-cpp-2 `0.1.144` using:
//! - `llama_backend::LlamaBackend`
//! - `model::LlamaModel`
//! - `context::params::LlamaContextParams`
//! - `sampling::LlamaSampler`
//!
//! The test is gated behind `MAGNOTIA_LLM_TEST_MODEL`.
use std::env;
use std::path::PathBuf;
use lumotia_llm::LlmEngine;
use lumotia_llm::LlmModelId;
#[test]
fn llama_cpp_2_smoke_generates_and_wraps() {
let model_path = match env::var("MAGNOTIA_LLM_TEST_MODEL") {
Ok(path) => PathBuf::from(path),
Err(_) => {
eprintln!("MAGNOTIA_LLM_TEST_MODEL not set — skipping");
return;
}
};
let engine = LlmEngine::new();
engine
.load_model(LlmModelId::Qwen3_5_2B_Q4, &model_path, true)
.expect("load model");
let completion = engine
.generate(
"Write exactly one short greeting.",
&lumotia_llm::GenerationConfig {
max_tokens: 32,
temperature: 0.0,
stop_sequences: vec!["\n".to_string()],
grammar: None,
},
)
.expect("generate");
assert!(!completion.trim().is_empty());
let cleaned = engine
.cleanup_text(
"You are a transcript cleanup assistant. Remove fillers and output only cleaned text.",
"um hello there like general kenobi",
)
.expect("cleanup_text");
assert!(!cleaned.trim().is_empty());
let tasks = engine
.extract_tasks("I need to call the plumber tomorrow and buy milk.")
.expect("extract_tasks");
assert!(!tasks.is_empty());
let steps = engine
.decompose_task("Plan a weekend trip to the coast")
.expect("decompose_task");
assert!((3..=7).contains(&steps.len()));
}