mod common;
use common::*;
use std::{fs, path::PathBuf, process::Command};
use tempfile::Builder;
fn viml_escape(in_str: &str) -> String {
in_str.replace('\\', r"\\")
}
#[test]
fn basic() {
let dir = Builder::new().prefix("nvim-rs.test").tempdir().unwrap();
let dir_path = dir.path();
let buf_path = dir_path.join("curbuf.txt");
let pong_path = dir_path.join("pong.txt");
let c1 = format!(
"let jobid = jobstart([\"{}\", \"{}\"], {{\"rpc\": v:true}})",
viml_escape(
PathBuf::from(env!("EXAMPLES_PATH"))
.join("basic")
.to_str()
.unwrap()
),
viml_escape(buf_path.to_str().unwrap())
);
let c2 = r#"sleep 100m | let pong = rpcrequest(jobid, "ping")"#;
let c3 = format!(
"edit {}| put =pong",
viml_escape(pong_path.to_str().unwrap())
);
let c4 = r#"wqa!"#;
let status = Command::new(nvim_path())
.args(&[
"-u",
"NONE",
"--headless",
"-c",
&c1,
"-c",
c2,
"-c",
&c3,
"-c",
c4,
])
.status()
.unwrap();
assert!(status.success());
let pong = fs::read_to_string(pong_path).unwrap();
let buf = fs::read_to_string(buf_path).unwrap();
assert_eq!("pong", pong.trim());
assert_eq!("Ext(0, [1])", buf.trim());
}