use std::process::Command;
use tempfile::tempdir;
fn run_cli(dir: &std::path::Path, args: &[&str]) -> (String, String) {
let exe = env!("CARGO_BIN_EXE_minkv");
let output = Command::new(exe)
.args(args)
.current_dir(dir)
.output()
.expect("无法运行 minkv 二进制文件");
let stdout = String::from_utf8(output.stdout).unwrap();
let stderr = String::from_utf8(output.stderr).unwrap();
(stdout, stderr)
}
#[test]
fn test_cli_persistence() {
let dir = tempdir().unwrap();
let (stdout, stderr) = run_cli(dir.path(), &["set", "hello", "world"]);
assert!(stderr.is_empty(), "stderr should be empty, got: {}", stderr);
assert_eq!(stdout.trim(), "OK");
let (stdout, stderr) = run_cli(dir.path(), &["get", "hello"]);
assert!(stderr.is_empty());
assert_eq!(stdout.trim(), "world");
let (stdout, stderr) = run_cli(dir.path(), &["remove", "hello"]);
assert!(stderr.is_empty());
assert_eq!(stdout.trim(), "OK");
let (stdout, stderr) = run_cli(dir.path(), &["get", "hello"]);
assert!(stdout.is_empty());
assert!(stderr.contains("键不存在"));
}