use std::path::Path;
use std::process::Command;
use assert_cmd::prelude::*;
use tempfile::TempDir;
fn mnem(repo: &Path, args: &[&str]) -> Command {
let mut cmd = Command::cargo_bin("mnem").expect("mnem binary built");
cmd.current_dir(repo).arg("-R").arg(repo);
cmd.env("HOME", repo);
cmd.env("USERPROFILE", repo);
cmd.env("MNEM_DISABLE_GLOBAL_CONFIG", "1");
cmd.env_remove("MNEM_EMBED_PROVIDER");
cmd.env_remove("MNEM_EMBED_MODEL");
cmd.env_remove("MNEM_EMBED_API_KEY_ENV");
cmd.env_remove("MNEM_EMBED_BASE_URL");
for a in args {
cmd.arg(a);
}
cmd
}
#[test]
fn ingest_keybert_works_with_bundled_embedder() {
let td = TempDir::new().expect("tmp");
let repo = td.path();
mnem(repo, &["init"])
.ok()
.expect("mnem init should succeed on an empty dir");
let file = repo.join("note.md");
std::fs::write(&file, "# hello world\nthis is a note\n").unwrap();
let out = mnem(
repo,
&["ingest", "--extractor", "keybert", file.to_str().unwrap()],
)
.output()
.expect("spawn");
assert!(
out.status.success(),
"keybert should succeed with bundled embedder; stderr: {}",
String::from_utf8_lossy(&out.stderr)
);
}