KeiSeiKit-1.0/_primitives/_rust/kei-llm-llamacpp/tests/discovery_both_bins.rs
Parfii-bot a4e667de10 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

53 lines
1.8 KiB
Rust

//! With both binaries present (via tempdir + KEI_LLAMA_CPP_DIR),
//! `discover` returns populated BinPaths. The Mock pretends `--version`
//! emitted "version 4203" so we get a parsed version too.
mod common;
use kei_llm_llamacpp::discover;
use kei_llm_llamacpp::runner::RunOutput;
#[tokio::test]
async fn discovery_both_bins_populates_binpaths() {
let td = tempfile::tempdir().unwrap();
let cli = td.path().join("llama-cli");
let server = td.path().join("llama-server");
std::fs::write(&cli, b"#!/bin/sh\n").unwrap();
std::fs::write(&server, b"#!/bin/sh\n").unwrap();
#[cfg(unix)]
{
use std::os::unix::fs::PermissionsExt;
std::fs::set_permissions(&cli, std::fs::Permissions::from_mode(0o755)).unwrap();
std::fs::set_permissions(&server, std::fs::Permissions::from_mode(0o755)).unwrap();
}
let _guard = path_lock();
let prev = std::env::var_os("KEI_LLAMA_CPP_DIR");
std::env::set_var("KEI_LLAMA_CPP_DIR", td.path());
let runner = common::MockRunner::new();
runner.push(common::Behaviour::Run(RunOutput {
stdout: "version 4203\n".into(),
stderr: String::new(),
code: 0,
}));
let bp = discover(&runner).await.unwrap();
if let Some(p) = prev {
std::env::set_var("KEI_LLAMA_CPP_DIR", p);
} else {
std::env::remove_var("KEI_LLAMA_CPP_DIR");
}
assert!(bp.llama_cli.is_some(), "llama-cli should be located");
assert!(bp.llama_server.is_some(), "llama-server should be located");
assert_eq!(bp.version.as_deref(), Some("4203"));
assert!(bp.any_found());
}
fn path_lock() -> std::sync::MutexGuard<'static, ()> {
use std::sync::{Mutex, OnceLock};
static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
LOCK.get_or_init(|| Mutex::new(())).lock().unwrap_or_else(|e| e.into_inner())
}